将文本文件内容复制到C中的2D数组中

时间:2016-01-31 06:11:18

标签: c

我想将具有10 x 10个字符数组的文件的内容复制到2D数组中。我验证了,但编译器给了我一个空屏幕。由于程序不打印,文件正在打开:“打开文件时出错”,如果你帮助我,我将不胜感激。这是我的代码:

{{1}}

谢谢

2 个答案:

答案 0 :(得分:1)

你的阅读循环条件总是是假的,所以你从来没有读过任何东西。当您打印出未初始化的puzzle矩阵时,这将导致未定义的行为

EOF定义为-1,而在C中,任何非零都是真的,因为你否定了这个" true"通过!运算符的值,您的条件将为false。

通常的新手方式是使用

while (!feof(fp)) { ... }

but that's the wrong solution(大多数情况下)。

取而代之的是

while (fgets(line, sizeof line, fp) != NULL) { ... }

顺便说一句,如果您阅读的行少于9个字符,那么仍然 被初始化。您可能希望首先对其进行初始化,这可以在您定义它时完成:

puzzle

另请注意,如果您阅读的行只有9个字符或更长,那么char puzzle[10][10] = { 0 }; 调用将不会在字符串中包含换行符。

答案 1 :(得分:1)

您使用的数组大小错误。

当一行有10个字符时,您需要

// 10 characters, the newline and the terminating null character.
char line[12];
char puzzle[10][12];