使用strcmp搜索文件(运行时错误)

时间:2015-05-10 16:30:11

标签: c strcmp

我的代码有问题,运行时错误。

此代码假设要求用户输入名称然后通过 文件并搜索用户输入的输入。

我得到了这个警告。

  

([警告]传递' strcmp'的参数1使整数指针没有强制转换[默认情况下启用]

void search()
{
 FILE *infile;
int i=0,found=0;
char list[SIZE], str[SIZE];

infile = fopen("records.txt","r");
printf("enter a book name to search in the list > /n");
gets(list);
i=0; 
while (!found && i<SIZE) {
        if(strcmp(list[i], str) == 0)
            found = 1;
        else
          i++;
}

if(found)
        printf("%s is in the list at row %d\n",str,i);
    else printf("%s is not in the list.\n", str);

  printf("\n");    
}

1 个答案:

答案 0 :(得分:1)

这里的问题是使用strcmp()。根据手册页,

  

int strcmp(const char *s1, const char *s2);

它期望const char *作为两个参数。但是您传递了list[i]char

此外,请勿使用gets()。它非常不安全,请改用fgets()

那就是说,我认为你的计划被严重破坏了。

  1. 你打开了文件,从未读过任何文件。为什么?
  2. str未初始化使用。导致未定义的行为。
  3. 您从未关闭过该文件。