C:打印二维数组的问题

标签 c multidimensional-array printf

我正在编写 C 代码,但在打印二维数组时遇到问题。它不是一次打印一个字符串,而是从要求的点打印整个数组。

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

DogCatHat
CatHat
Hat

这就是我的代码应该做的事情:它从文件中读取。它创建一个 char 数组的数组。每个字符数组有 30 个字符,每次从文件中读取一个字符。然后它每行打印出一个字符数组。

代码如下所示:

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]);
}

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

最佳答案

我认为文件中的字符串不是以空字符结尾的。所以你需要在数组的最后一个字符处放置空字符。

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]);
}

关于C:打印二维数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40829778/

相关文章:

c - 为什么将指向数组的指针传递给需要指向 int 的指针的函数可以正常工作而不会出现错误

c++ - 从 C 调用 C++ 函数

c - 我是否转换 malloc 的结果?

Python:ctypes + C malloc 错误。 C内存问题还是Python/ctypes问题?

c - 测量上下文切换时间 C (Windows)

c++ - 定义 d 维度的数字元组并访问它们

c - 在 C 中用 if 语句填充二维数组

c - C 中的 Printf(类型)

c - 十六进制 uint32_t 的 printf() 格式,不丢失零。 (在 c89 中)

c++ - 具有整数成员的对象的 Printf