C从文件读取数字到数组

时间:2016-01-20 04:41:29

标签: c arrays file

嘿,所以我试图从文本文件中读取数字并将它们放入一个数组中,但是当我尝试打印时,我已经得到了奇怪的数字。文本文件如下:

45
77
8
...

我猜我使用的循环有问题,但我似乎无法找出答案。 谢谢你的帮助!

代码:

#define MAX_ARRAY_SIZE 20

int main(int argc, char * argv[])
{
    FILE *myFile;
    int myArray[MAX_ARRAY_SIZE];
    //char filename[32];
    //printf("enter filename\n");
    //scanf("%s", filename);

    myFile = fopen("asdf.txt", "r");
    if (!myFile) {
        printf("cant open file\n");
        return 1;
    }
    int status;
    int i = 0;
    while ((status = fscanf(myFile, "%2d", &myArray[i])) == 1 && i < MAX_ARRAY_SIZE - 1) {
        ++i;
    }
    fclose(myFile);


    int a;
    for (a = 0; i < MAX_ARRAY_SIZE; ++i) {
        printf("%d ", myArray[i]);
    }
    printf("\n");
return 0;
}

3 个答案:

答案 0 :(得分:0)

试试这个

{{1}}

答案 1 :(得分:0)

问题在于你的打印循环:

for (a = 0; i < MAX_ARRAY_SIZE; ++i)

无法保证您正在阅读MAX_ARRAY_SIZE值。此外,如果您使用'a'作为循环迭代器,则需要使用'a'。你的循环应该是:

for (a = 0; a < i; ++a)
    printf("%d ", myArray[a]);

您的格式说明符中也不需要字段宽度,fscanf(myFile, " %d", &myArray[i]))也可以。

答案 2 :(得分:-1)

是的......我还没有看到打印循环代码..抱歉。 问题在于打印循环不是fscan,请忽略我的回答