C:打印2d数组问题

时间:2016-11-27 14:00:29

标签: c multidimensional-array printf

我正在处理我的C代码,并且在打印我的2d数组时遇到了问题。它不是一次打印一个字符串,而是从询问点打印整个数组。

例如,输入是“Dog”,“Cat”,“Hat”。然后打印出来:

DogCatHat
CatHat
Hat

这是我的代码所要做的:它从文件中读取。它创建了一个char数组数组。每个char数组中有30个字符,当时从文件中读取一个字符。然后它每行打印出一个char数组。

这就是代码的样子:

char fname[] = "folder/text.txt";
char arry[30][30];
FILE *file;

file = fopen(fname, "r");
for(int x=0; x<30; x++){
    for(int i=0; i<30; i++){
        arry[x][i] = fgetc(file);
    }
}

fclose(file);
for(int i=0; i<30; i++){
    printf("%s\n", arry[i]);
}

我很可能犯了一个明显的错误,但我无法找到它。所以请帮忙。

1 个答案:

答案 0 :(得分:1)

我认为文件中的字符串不会以空值终止。所以你需要在数组的最后一个字符处加上空字符。

char arry[30][30]

for(int x=0; x<30; x++){
    for(int i=0; i<29; i++){  //You can write 29 characters + '\0'
        arry[x][i] = fgetc(file);
    }
    arry[x][29] = '\0';
}
for(int i=0; i<30; i++){
    printf("%s\n", arry[i]);
}