我在创建一个程序来读取文件“data.txt”并将文件的第一个整数作为 arrayA 的长度以及文件中第二行的第一个整数作为长度时遇到问题第二个数组 B.之后我将对这两个数组进行排序,但我只需要帮助尝试从文件中获取输入并将它们存储在两个数组中。
因此文件可能如下所示:
4 5 8 6 4
3 8 5 4
第一个字符“4”表示 arrayA 的长度为 4,并包含接下来的 4 个输入。第二行第一个字符“3”表示arrayB
的长度为3。 .
int main(){
FILE* fileP;
int aLngth=0, int bLngth=0;
int i=0, j=0;
fileP = fopen("data.txt","r");
fscanf(fileP, "%i", &aLngth);
int arrayA[aLngth];
for(i=0; i<=aLngth; i++){
if(i==0){continue;}
fscanf(fileP, "%i", &arrayA[i]);//store length a
if(i+1>aLngth){
fscanf(fileP, "%i", &bLngth); //store length b
for(j=0;j<=blLngth; j++){
fscanf(fileP, "%i", &arrayB[j]);
}
}
}
fclose(fileP);
}
最佳答案
您应该在第一个循环之后放置第二个循环,而不是在其中。
没有理由跳过i==0
在第一个循环中。
您缺少 arrayB
的声明.
for
循环应使用 <
而不是<=
在重复条件中,因为数组的最后一个索引是 length-1。
#include <stdio.h>
int main(){
FILE* fileP;
int aLngth=0, int bLngth=0;
int i=0, j=0;
fileP = fopen("data.txt","r");
fscanf(fileP, "%i", &aLngth);
int arrayA[aLngth];
for(i=0; i<aLngth; i++){
fscanf(fileP, "%i", &arrayA[i]);
}
fscanf(fileP, "%i", &bLngth);
int arrayB[bLngth];
for(j=0;j<bLngth; j++){
fscanf(fileP, "%i", &arrayB[j]);
}
fclose(fileP);
}
关于c - 存储给定文件中的数组长度和数组输入的问题,其中第一个整数是第一个数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59762661/