秸秆收割粉碎机视频:谁帮我做一下这个C语言的题目

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 04:49:46
下列程序执行后第一个数据是? 第二个数据是?
#include<stdio.h>
main()
{
file *fp;
int i,k=0,n=0;
fp=fopen("d1.dat","w");
for(i=1;i<4;i++)
fprintf(fp,"%d",i);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);
printf("%d %d\n",k,n);
fclose(fp);
}

答案是123和0,我觉得不对的,应该是1和2,但是我不知道为什么答案是123和0,希望大虾能帮我做一下,不但要答案,还要有为什么,怎么做出来的。

答案就是答案,是对的!
分析一下fscanf你就知道了!
fscanf和scanf一样,scanf(format.. ,pointer)
%d接收整型数据,在遇到非法字符时结束,
%s接收一连串字符串,当遇到回车时结束,
综合情况,
%d%c当%d遇到非法字符或空格时结束,%c开始接收字符!
输入可以为 123c或 123 c 123和c之间可以出现一个或多个空格!
话说回来,%d%d当时就是只有第一个%d接收完毕后才由第二个接收数据,那么文件里只有 123,当然全部被第一个%d接收了,而第二个接到不到什么,此时为原来初始化的值!
看看清华版的C语言课本的 scanf()函数的说明你就知道了!这是最无聊的C语言试题了!基本知识来的!

应该是123,0。
因为向文件中输出123时中间没加空格,所以fscanf时,程序把123当成一个数了,读给了k,至于n则没有读到数据,保持原值0

应该是1和2
答案错了
我想,我跟你的做法一样,所以不说了