c - 存储给定文件中的数组长度和数组输入的问题,其中第一个整数是第一个数组的长度

标签 c arrays file-io

我在创建一个程序来读取文件“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/

相关文章:

代码在 Windows 中有效,但在 Linux 中无效!为什么? 【简单的指针问题】

c - 为什么这个 switch 语句在运行时结束 while 循环?

java - 保存txt文件时出现文件未找到错误

java - 无法在文件中找到换行符(java)

从 C 上的文本文件创建双向链表

c++ - while 循环是否总是占用全部 CPU 资源?

javascript - 使用 Angular.js 访问 php 数组数据

arrays - 在 Java/Groovy 中将数组转换为字符串

java - java中如何对数组进行排序?

php - 更改文件的单个字符