我正在处理我的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]);
}
我很可能犯了一个明显的错误,但我无法找到它。所以请帮忙。
答案 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]);
}