将文件中的整数扫描到C中的数组中
Scanning integers from a file into an array in C?
我在获取程序时遇到问题,该程序旨在将斐波那契序列生成到一个文件中,然后读回。我不确定r=的问题是在扫描还是打印,但我一直得到很长的错误数字
#include<stdio.h>
int main(){
//Step 1
int N;
scanf(" %d", &N);
if(N > 2){
printf("You entered argument: %dn", N);}
else{
printf("That is an illegal argument. N must be greater than 2.");
return 0;}
unsigned long a = 1;
unsigned long b = 1;
unsigned long c;
int count = 2;
FILE *fib;
fib = fopen("Fibonacci", "w+");
if (fib == NULL) {
printf("Open TestFile failedn");
return -1;}
fprintf(fib, "%lu %lu ",a,b);
printf("%lu %lu ",a,b);
for(count; count < N; count++){
if(count % 4 == 0){
fprintf(fib, "n");
printf("n");}
c = a+b;
if(c < a){
printf("integer overflow, ending number generation.");
break;}
fprintf(fib, "%lu ",c);
printf("%lu ",c);
a = b;
b = c;
}
fflush(fib);
printf("ncount = %d",count);
//Step 2
unsigned long med;
int middle;
unsigned long nums[count];
int j;
if(count % 2 == 1){
middle = (count/2);
for(j = 0; j < count; j++){
fscanf(fib, "%lu", &nums[j]);}
med = nums[middle];
printf("nmedian = %lu", med);}
unsigned long test1 = nums[0];
unsigned long test2 = nums [1];
unsigned long test3 = nums [2];
printf("nnums array: %lu %lu %lu",test1, test2, test3);
return 0;
}
如果输入为3,则输出为
You entered argument: 3
1 1 2
count = 3
median = 221891732872
nums array: 140733854067968 221891732872 26447888
正如Johnny Mopp所指出的,您不会倒带文件,所以在第二步中,当您阅读时,您已经在文件末尾了。如果您测试了不同scanf的返回代码,这将是显而易见的。
您应该关闭并重新打开文件,或者调用
fseek(fib, 0L, SEEK_SET);
在步骤2开始时
无论如何:始终测试输入函数的结果。
您可以:
- 调用
rewind(fib);
将文件指针重置为文件的开头 - 或者在步骤1&2,调用
fclose(fib);
,然后用fopen("Fibonacci", "r");
重新打开它,在这种情况下,第一个fopen
调用可以简单地将"w"
作为第二个参数
我不太喜欢r+/w+
模式,而且它们在实践中没有太多用途(imo),除非您处理像/dev/mem
之类的特殊文件。
请参阅http://www.cplusplus.com/reference/cstdio/fopen/
相关文章:
- C++使用整数的压缩数组初始化对象
- 在一定长度后从数组中打印时缺少整数
- 是否基于数组B整数打印数组A中的整数
- 检查TCHAR数组输入是否为带符号整数C++
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 从二进制文件中读取整数数组
- 整数区间(或 int 数组)中每个数字的出现次数
- 新的整数数组向右移动?
- C++ 中的二维整数数组,每行中的元素数量不均匀
- 在数组中输入 n 个整数的列表,并以类似于钟摆来回移动的方式排列它们. 输入-1 3 2 5 4,输出5 3 1 2 4
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 为什么在我的 main 函数中声明整数后我的整数数组中会出现错误?
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- C++数组输入不接受一定数量的整数
- 从两个 4x64 位整数数组中获取取模
- 如何计算数组整数的总可能组合
- 2D 字符串数组 C++:整数串联成字符串
- 将数组整数2除以偶数和
- 将2d数组整数数据从c++发送到qml