将输入读入数组

时间:2013-11-13 23:11:00

标签: 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语法对于结构是否不正确?我已经尝试了几种不同的组合,无法弄明白。

1 个答案:

答案 0 :(得分:4)

我认为您的问题出在未初始化或未重置的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++;
    }
}