2017-03-21 217 views
-2

我正在尝试逐行读取.txt文件,其中每行都有两个单词和两个整数。从C文件中逐行读取

目前我正在用的fscanf一个循环,但我尝试打印的价值观和执行任何打印:

while{fscanf(filename,"%s %s %d %d", first,second,&num1,&num2) == 1) 
{ 
     printf("%s %s %d %d", first,second,num1,num2); 
} 

不正常打开我检查了该文件,所以问题是,值不被正确读入。 fscanf()是我应该使用的函数吗?如果没有,我也许听说过fgets(),但是我不知道如果我有两个字符串和两个整数,这将如何工作。 任何帮助,将不胜感激。

+3

请阅读'fscanf'的手册页以找出正确的返回值以便与 –

+1

进行比较。使用'fgets'来读取整行。然后用'sscanf'或/和'strtol'扫描。 – i486

+0

感谢您的建议,这是我的第一个学期编码,并没有意识到有一个手动哈哈。问题是通过将fscanf == 1更改为fscanf == 4来解决的,因为有4个变量被匹配 –

回答

1

更换

while{fscanf(filename,"%s %s %d %d", first,second,&num1,&num2) == 1)

while(fscanf(filename,"%s %s %d %d", first,second,&num1,&num2) == 4)

1

的fscanf的返回值是项目的数量读取所以你的情况,函数返回4,并且总是不等于1,因此循环的主体不执行。