fgets有更多的字符,它应该是

时间:2015-11-29 15:38:24

标签: c arrays fgets memcpy strcmp

您好我尝试使用fgets从stdin获取字符串并将其存储在输入中,然后它应该使用strcmp方法与一个单词数组(从文本文件中取出超过50000个单词)进行比较,但由于某种原因,我永远无法让他们进行比较,直到我发现为什么这里是我的代码。

char[] text;// <----------array is already full and working at this point I just 
char input[24];//         thought I'd include this for the memcpy
char check[24]="happ";
fgets(input,24, stdin);

for(int i=0; i < 50000; i++){
  memcpy(check, text[i], strlen(input));// this is supposed to get a substring


    if(strcmp(check, input) == 0){// this is supposed to auto complete 
        printf("%s",text[i]);}// say for example 4 letters are inputted the entire 
//array will be checked if they have the same letters then that word will be printed


printf("\n %lu %s\n",strlen(check),check);
printf("\n %lu %s\n",strlen(input),input);

如果&#34;开心&#34;插入它应该打印出数组中的最后一个字母及其   大小应该是4但是stdin&#34; 5开心&#34;我以为可能会有\ n 在输入结束时所以我使用了一个temp并获得了输入的子串 strlen(输入)-1但我得到的只是&#34; 6开心\ 377&#34;请帮助我尝试研究它,但我不明白它有什么问题,所以我不知道该研究什么

1 个答案:

答案 0 :(得分:0)

我能够找到答案,最后这是一个简单的修复

int cch=strlen(input-1);
if (cch > 1 && input[cch-1] == '\n')
input[cch-1] = '\0';