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