从书面文件中读取一行整数? C编程

时间:2015-10-18 22:00:24

标签: c integer eof scanf

**我还是C的新手,这是一个初学者的问题。我试图读取一个由我已经写过的文件中的空格分隔的整数行,但它不起作用。当我尝试将整数打印到屏幕时,我得到-1。我不确定为什么会这样:

#include <stdio.h>

int main() {
//create an array of characters
char str1[10];
//ask the user to enter a file name
printf("Enter a file name\n");
//str1 holds the address of the file name user enters
scanf("%s", str1);

FILE *fp;

fp = fopen(str1, "w+");
//write integer values to created file, separated by a space
fprintf(fp, "%d", 2);
fprintf(fp,"%c", ' ');
fprintf(fp, "%d", 4);
fprintf(fp,"%c", ' ');
fprintf(fp, "%d", 5);
fprintf(fp, "%c", ' ');
fprintf(fp, "%d", 7);
fprintf(fp, "%c", ' ');
fprintf(fp,"%d", 9);

int number;
int counter, c=0;
//if nothing is in file, then print error statement
if (fp==NULL){
    printf("File cannot be read");
}
c = fscanf(fp, "%d", &number);

while (c !=EOF){
    counter++;
    c = fscanf(fp, "%d", &number);
    printf("%d",c);
}
fclose(fp);

}

如何正确打印整数到屏幕? (计数稍后用于计算平均值,我最初要求用户输入一个将整数写入文件的文件名)

1 个答案:

答案 0 :(得分:1)

你有很多问题:

  1. 写入文件后,位置位于文件末尾。在阅读之前,需要rewind在文件的开头重新开始。
  2. printf应打印number而不是c
  3. printf应放在循环中的fscanf之前。否则,第一个号码将被遗漏,最后一个号码将用于已返回fscanf的{​​{1}}(即EOF对最后一个案例无效)。