C语言中fscanf的问题

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个数中的最大值,这样写出来我发现第一个函数数字写进文件是对的,但是第二个函数里把文件里的数字写进数组始终不对,求大神帮我看看错在哪里了

请注意你的fopen的用法 第一个参数是文件名 第二个参数很重要 你两次都写了"w"模式
而w代表write 写模式 在这个模式下使用fscanf 基本是不会成功的
读需要使用"r" 模式 一定要了解一下这些模式
w , r, t ,b , + 等等 还可以互相组合使用 如 wt rt wb rb w+ r+ 等等追问

改了r还是不行

追答

我读出来问题并没有那么大啊?  只是数字中间少了个10

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-02
写数据是用fprintf
fscanf是读数据的追问

对啊,我想把文件里的数字读到数组里面怎么不对呢

追答

w 打开文件表示要写文件,

都被你覆盖了,怎么读呀?

追问

改成r还是不行。。

追答

改了之后的症状是什么?你会下断点调试么?

追问

数组里面的元素全是随机数,好像还是文件读取有问题

追答

你把fscanf中多余的空格去掉,只留%d

相似回答