【发布时间】:2020-10-06 03:08:55
【问题描述】:
在下面的代码中,我使用 fgets 来保存字符串的输入。使用 fgets 在我的搜索函数 display() 上获得所需的 strcmp() 将不起作用,但使用 scanf() 它确实起作用。为什么会这样?
int main(){
char end[]="end" ;
FILE *file ;
char searchfor[30] ;
if( (file=fopen("c:\\Users\\Konpoul\\Desktop\\GrGames.txt", "r")) ==NULL ){
printf("cannot open file");
exit(1) ;
}
fileRead(file) ; // This is a function
while( strcmp(searchfor,end) !=0 ){
fgets(searchfor,sizeof(searchfor),stdin) ;
//scanf("%s",&searchfor) ;
display( searchfor) ; // Inside this function I strcmp(a_name , searchfor)
}
printf("end") ;
}
这里是显示功能没有按预期工作
void display(char *name){
for(int i =0 ; i<N ; i++){
if( strcmp(player[i].name , name )==0 ){
printf("Name :%s date: %d Goals: %d Meters Runned: %d Time played : %f" ,player[i].name ,player[i].date ,player[i].goals,player[i].passes ,player[i].timepl) ;
}
}
}
【问题讨论】:
-
那么你的意思是,当我用 fgets 输入时,它会在最后保存带有“\n”的字符串?
-
@Atheros
fgets文档解释了这一切。 -
旁白:请初始化
searchfor例如char searchfor[30] = "";以便对strcmp的第一次调用有效。