int SaveInt(char *cFileName)
{
int i, iNum[10];
FILE *fp;
if((fp = fopen(cFileName,"w")) == NULL)
{
printf("打不开文件");
return 0;
}
printf("请输入10个数字:\n");
for(i = 0; i < 10; i++)
{
scanf("%d", &iNum[i]);
}
fprintf(fp, "%d %d %d %d %d %d %d %d %d %d", iNum[0], iNum[1], iNum[2], iNum[3], iNum[4], iNum[5], iNum[6], iNum[7], iNum[8], iNum[9]);
return 1;
}
int FindMax(char *cFileName, int *iMax)
{
FILE *fp;
int i, Max;
int count[10];
if((fp = fopen(cFileName,"w")) == NULL)
{
printf("打不开文件");
return 0;
}
for(i = 0; i < 10; i++)
{
fscanf(fp, "%d ", &count[i]);
}
printf("%d %d %d %d %d %d %d %d %d %d", count[0], count[1], count[2], count[3], count[4], count[5], count[6], count[7], count[8], count[9]);
Max = count[0];
for(i = 1; i < 10; i++)
{
if(Max < count[i])
{
Max = count[i];
}
}
*iMax = Max;
return 1;
}
我这个程序里要求第一个函数输入10个数字到一个文件中,然后通过第二个函数找出10个数中的最大值,这样写出来我发现第一个函数数字写进文件是对的,但是第二个函数里把文件里的数字写进数组始终不对,求大神帮我看看错在哪里了
C语言中fscanf的问题
答案:2 悬赏:20 手机版
解决时间 2021-03-24 04:25
- 提问者网友:我是女神我骄傲
- 2021-03-23 08:26
最佳答案
- 五星知识达人网友:一叶十三刺
- 2021-03-23 10:03
请注意你的fopen的用法 第一个参数是文件名 第二个参数很重要 你两次都写了"w"模式
而w代表write 写模式 在这个模式下使用fscanf 基本是不会成功的
读需要使用"r" 模式 一定要了解一下这些模式
w , r, t ,b , + 等等 还可以互相组合使用 如 wt rt wb rb w+ r+ 等等
而w代表write 写模式 在这个模式下使用fscanf 基本是不会成功的
读需要使用"r" 模式 一定要了解一下这些模式
w , r, t ,b , + 等等 还可以互相组合使用 如 wt rt wb rb w+ r+ 等等
全部回答
- 1楼网友:几近狂妄
- 2021-03-23 11:29
是以空格分隔的。
fscanf会返回读取成功的数据个数,你可以用
int ans=fscanf(fp,"%d%d",&a,&b);
的方法,看ans是否为2,是则表示输入成功。
文件指针是自动递增的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯