c - 将输入读入数组

标签 c arrays

我试图从一个文件中读取一系列 8 个整数到一个数组中,然后显示这些整数。我第三次一直遇到段错误,我不太清楚自己做错了什么。

struct aStruct {
    int a;
    int b;
    ...
};

typedef struct aStruct myStruct; 

while(fgets(line, MAX_LENGTH, file) != NULL) {
    int myArray[8] = {0};
    char* val = strtok (line," ,\n\t\r");
    while (val != NULL)
    {
        myArray[i] = atoi(val);
        i++;
        val = strtok (NULL, " ,\n\t\r");
    }

    myStruct foo;

    foo.a = myArray[0];
    foo.b = myArray[1];
            ...
}

输入文件的结构如下:

0, 0, 1, 5, 0, 0, 0, 0
1, 0, 2, 5, 0, 0, 0, 0
2, 0, 3, 5, 0, 0, 0, 0
3, 0, 4, 5, 0, 0, 0, 0
4, 0, 5, 5, 0, 0, 0, 0

测试时:

printf("myArray[0]: %d ", myArray[0]);

我得到一个奇怪的输出 0 0

我认为它应该是 0 1。我是否没有正确初始化某些东西,或者我的 new 结构语法不正确?我尝试了几种不同的组合,但还是不太明白。

最佳答案

我认为您的问题出在未初始化或未重置的 i 变量中。在 while 循环中添加 i = 0 可能会有所帮助。

while(fgets(line, MAX_LENGTH, file) != NULL) {
    i = 0; // <<< reseting array index
    int myArray[8] = {0};
    char* val = strtok (line," ,\n\t\r");
    while (val != NULL)
    {
        //...
        i++;
    }
}

关于c - 将输入读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966371/

相关文章:

c - 如何在现代opengl中制作示例一维纹理?

c - 我只是想不通 strcat

java - 为什么我的数组只打印一半的值

c++ - 在 std::array 上使用 std::get 会提供更好的性能吗?

java - 颠倒句子中每个单词的字符而不颠倒词序

c - 为什么修改数据字段会改变链接列表中的其他字段

C 程序 : A array containts items ID's, B 数组包含已售出的商品 查找包含未售出商品的 C 数组

arrays - 具有双for循环的bash脚本可以访问数组名称

arrays - 如何计算一组数字的 EMA?

c - 结构和指针