编译通过,但运行错误
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
FILE *fp;
int strcomp ( char strin[], char strcp[] );//比较字符串
int strlength( char *s );//求长度
void clean ( char *s );//清空数组
int main( void )
{
int k=0, ci=0, ch=0;//ch为记录换行次数
char strin[20]={"0"}, strcp[20]={"0"};//strin:为存储要查询的字符串 strcp:存储从文件里读取的一个字符串
if( (fp=fopen("E:\\text.txt","r")) == NULL )
{ printf("无法打开该文本文件\n"); return(0); }
for( ; ; )
{
printf("0:退出; 1:进入查询;\n");
scanf("%d",&k);
getchar();
if( 0==k ) exit(0);
printf("请输入要查询的字符或字符串\n");
scanf("%s",strin);
getchar();
while( !feof(fp) )
{
for( ci=0; strcp[ci] != ' '; ci++ )
if( ( strcp[ci]=fgetc(fp) ) == '\n' )
{
ch++;
strcp[ci]=' ';
break;
}
strcp[ci]='\0';
if( strcomp( strin,strcp ) == 1 )
printf("字符串 %s 出现在第 %d 行\n",strin,ch);
clean( strcp );
}
clean( strin );
}
fclose( fp );
return(1);
}
int strlength( char *s )
{
int i=0;
while( *(s++) != '\0' )
i++;
return( i );
}
int strcomp( char strin[], char strcp[] )
{
int i;
if( strlength( strin ) != strlength( strcp ) )
return( 0 );
else
{
for( i=0; i < strlength( strin ); i++ )
if( strin[i] != strcp[i] )
return( 0 );
return(1);
}
}
void clean( char *s )
{
while( *s != '\0' )
{
*s='\0';
s++;
}
}