繁体   English   中英

C - fscanf混合数和静态文本

[英]C - fscanf Mixed Numbers and Static Text

我试图读取以这种一般方式格式化的文件:

Text Description: 12
Description2: 1
More descriptive things: 6

我想把数字12,1和6读成变量。

我试过这样的代码:

fscanf(fptr, "Text Description:%d",&desc1);
fscanf(fptr, "Description2:%d",&desc2);
fscanf(fptr, "More descriptive things:%d",&desc3);

但由于某种原因,只有第一个变量被填充。 有谁知道为什么会这样?

在字符串格式的开头添加空格以避免新行问题

fscanf(fptr, " Text Description:%d",&desc1);
fscanf(fptr, " Description2:%d",&desc2);
fscanf(fptr, " More descriptive things:%d",&desc3);

处理完12后,您不会读取换行符,因此其他两个调用是查找而不是字符串或整数,因此失败。 您可以在下一个fscanf调用中使用空格(它会消耗您要匹配的字符串前面的所有空白字符)。 或者,您可以通过调用fgetc来使用它,只要每行直接以换行符结束,例如

fscanf(fptr, "Text Description:%d",&desc1);
fgetc(fptr); // drop the next character
fscanf(fptr, "Description2:%d",&desc2);

在整数之后删除所有流输入,直到下一个'\\ n',可以使用循环来完成:

while (fgetc(fptr) != '\n')
   ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM