c - 在 C 中发出返回字符串位置

标签 c string

我正在尝试编写一个程序来检查用户输入的名称列表,以查看输入的新名称是否在列表中。如果它不是列表的一部分,它应该返回 -1 到 main,并打印没有找到的名字;如果它是列表的一部分,它应该返回 0 并打印名字的位置。

我遇到的问题是我将键入一个名称列表,然后键入要搜索的名称,除非该名称是列表中的第一个名称,否则它会显示找不到名称。此外,如果您查看代码,您会注意到我正在打印“找到的名称”而不是字符串位置,这只是因为我还没有弄清楚如何做到这一点。帮助解决这个难题将不胜感激。

#include <stdio.h>
#include <conio.h>
#include <string.h>

#define MAX_NAMELENGTH 10
#define MAX_NAMES 5
void initialize(char names[MAX_NAMES][MAX_NAMELENGTH],int Number_entrys,int i);
int search(char names[MAX_NAMES][MAX_NAMELENGTH], int Number_entrys);
int main()
{

char names[MAX_NAMES][MAX_NAMELENGTH];
int i, Number_entrys,search_result;
 initialize(names,Number_entrys,i);
 search_result= search(names,Number_entrys);
 if (search_result==-1){
    printf("Found no names.\n");
}else{
 printf("Names found");
 }
getch();
return 0;
}

void initialize(char names[MAX_NAMES][MAX_NAMELENGTH],int Number_entrys,int i)
{

 printf("How many names would you like to enter to the list?\n");
 scanf("%d",&Number_entrys);

 if(Number_entrys>MAX_NAMES){
               printf("Please choose a smaller entry\n");
               }else{
  for (i=0; i<Number_entrys;i++){
 scanf("%s",names[i]);


 }
}   
}

int search(char names[MAX_NAMES][MAX_NAMELENGTH],int Number_entrys)
{
int x;
char new_name[MAX_NAMELENGTH];
printf("Now enter a name in which you would like to search the list for\n");

scanf("%s",new_name);

for(x = 0; x < Number_entrys; x++) 
{
if ( strcmp( new_name, names[x] ) == 0 )
{
    return x;
}

 } 
 return -1;        
}

最佳答案

因为您提前结束了 for 循环。这是您的代码,格式更好,更易于阅读。如果第一个 strcmp 未能返回 0,您的整个搜索函数将中止并返回 -1;

for(x = 0; x < Number_entrys; x++)
{
     if ( strcmp( new_name, names[x] ) == 0 )
     {
        return x;
     }
     else
     {
         return -1;   
     }  
}

这可能是您想要的:

for(x = 0; x < Number_entrys; x++)
{
     if ( strcmp( new_name, names[x] ) == 0 )
     {
        return x;
     }
}
return -1;

关于c - 在 C 中发出返回字符串位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13116093/

相关文章:

java - 单词中特定字符的大写或小写 "Java"

c - 从文件中删除字符串

c - 打印刚刚初始化的变量时未定义的行为

c++ - C位运算题

c++ - 让函数返回字符串而不是整数不好吗? (C++)

java - 如何将特殊字符保存到字符串中?

c++ - 存储双指针地址并检索其值

python - c有scanf,python有类似的东西吗?

c - 为结构体指针数组赋值

string - 从内存中的字符串加载node.js模块