【发布时间】:2017-08-20 01:04:58
【问题描述】:
我编写了一个程序,其中用户输入一个字符串,然后将该字符串与文件中的每个字符串进行比较。如果文件中的任何字符串或子字符串与用户输入的字符串匹配,则应显示该文件中的字符串。
我的 NOW.txt 文件的内容:
india
ind
in
indian
i
indians
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j,n,p;
char m[50], d[50];
FILE *fp;
fp=fopen("NOW.TXT","r");
printf("Enter a word\n");
scanf("%s", m);
n = strlen(m);
while( fgets (d, 50, fp)!=NULL )
{
p=strlen(d);
for(j=0; j<p; j++){
for (i=0; i<n; i++){
if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7] && m[8]==d[8] && m[9]==d[9] && m[10]==d[10] && m[11]==d[11] && m[12]==d[12] && m[13]==d[13] && m[14]==d[14] && m[15]==d[15])
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7] && m[8]==d[8] && m[9]==d[9] && m[10]==d[10] && m[11]==d[11] && m[12]==d[12] && m[13]==d[13] && m[14]==d[14] )
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7] && m[8]==d[8] && m[9]==d[9] && m[10]==d[10] && m[11]==d[11] && m[12]==d[12] && m[13]==d[13] )
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7] && m[8]==d[8] && m[9]==d[9] && m[10]==d[10] && m[11]==d[11] && m[12]==d[12])
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7] && m[8]==d[8] && m[9]==d[9] && m[10]==d[10] && m[11]==d[11] )
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7] && m[8]==d[8] && m[9]==d[9] && m[10]==d[10])
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7] && m[8]==d[8] && m[9]==d[9] )
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7] && m[8]==d[8])
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] && m[7]==d[7])
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] && m[6]== d[6] )
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4] && m[5]== d[5] )
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] && m[4]==d[4])
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] && m[3]==d[3] )
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1] && m[2]==d[2] )
printf("%s ",d );
else if( m[0]==d[0] && m[1]==d[1])
printf("%s ",d );
else if( m[0]==d[0] )
printf("%s ",d );
else
printf(" No such word exists in file");
}
}
}
}
当我输入时:
india
输出应该是:
india
indian
indians
我在这里做错了什么?
【问题讨论】:
-
你得到的输出是什么?
-
老兄,不要这样复制粘贴代码。始终保持干燥(D不要R重复Y我们自己)。使用带有
strncmp的循环来缩短它。
标签: c string file-handling