从写入的文件中读取一行整数? C编程
read a line of integers from written file? C programming
**我对 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);
}
如何正确地将整数打印到屏幕上? (稍后将使用计数来计算平均值,我最初要求用户输入一个文件名,该文件名会将整数写入文件)
你有几个问题:
- 写入文件后,位置在文件末尾。在读取文件之前需要
rewind
从文件的开头开始。
printf
应该打印 number
而不是 c
。
-
printf
应该放在循环中的 fscanf
之前。否则第一个数字会丢失,最后打印的是返回 EOF
的 fscanf
(即,number
对最后一种情况无效)。
**我对 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);
}
如何正确地将整数打印到屏幕上? (稍后将使用计数来计算平均值,我最初要求用户输入一个文件名,该文件名会将整数写入文件)
你有几个问题:
- 写入文件后,位置在文件末尾。在读取文件之前需要
rewind
从文件的开头开始。 printf
应该打印number
而不是c
。-
printf
应该放在循环中的fscanf
之前。否则第一个数字会丢失,最后打印的是返回EOF
的fscanf
(即,number
对最后一种情况无效)。