抱歉,我是新来的,我想从txt文件中读取这些数据.
A 7
c 5
y 6
U 9
j 4
Z 3
z 5
0
Run Code Online (Sandbox Code Playgroud)
这是我的代码
while(feof(input)==0){
char c;
int num;
fscanf(input,"%c%d",&c,&num);
printf("%c:%d\n",c,num);
}
Run Code Online (Sandbox Code Playgroud)
但结果是控制台与txt文件的结果不一样
打开文件完成
A:7
:7
c:5
:5
y:6
:6
U:9
:9
j:4
:4
Z:3
:3
z:5
:0
Run Code Online (Sandbox Code Playgroud)
我的代码是正确的,不是吗?
Run Code Online (Sandbox Code Playgroud)fscanf(input,"%c%d",&c,&num);我的代码是正确的,不是吗
你不是在吃换行符.改为:
fscanf(input,"%c%d ",&c,&num);
^
Run Code Online (Sandbox Code Playgroud)
作为解释,每一行以一个字符结束'\n'.如果你对它没有做任何事情,%c会尝试阅读它,你会得到令人困惑的结果.一个便宜的技巧是添加一个空白区域,fscanf让它在一%c%d对夫妇吃掉所有空白.
根据Peter Kowalski的评论:
不应该是fscanf(输入,"%c%d",&c,&num); ?我在%c和%d之间放了额外的空格
这个问题问得好.事情是忽视领先空间%d的指定者之一.无论溪流中有多少空白,都会吃掉并丢弃它们.因此,之前的空白是隐含的.scanf%d