2013-09-29 127 views
0

我有以下文字:Fscanf里面不断崩溃?

ASDCASDSA255878 Jack Jhon 1988 12 
ASDCASDSA255878 Bill Smith 1977 12 

,我有以下代码:

inputFile = fopen(fileName,"r"); 
char id[50]; 
char fname[50]; 
char lname[50]; 
char year[50]; 
char month[50]; 
while(fscanf(inputFile, "%s %s %s %s %s\n",id,fname,lname,year,month) == 5) 
{ 

} 
fclose(inputFile); 

的文件被打开,如果我把一个printf statment while循环中我可以看到它后它崩溃。

我试着将==5更改为!=EOF,但同样的问题。

+1

请提供一个完整的(但简短的)代码示例(用'main()'和'#include')。你的全部输入是上面的2行还是更多? – pts

+3

你不应该将无界数据读入缓冲区。说一些类似'%49s'的东西是安全的。 –

+0

最有可能的'filename'包含一些数据超过50个字符 – P0W

回答

1

很可能输入中的单词长于50个字符。

检查此问题的最简单方法是将代码中出现的所有[50]临时更改为输入文件大小,以便它足够大。