在我的文本文件中,有一个随机的二进制数写在a10 x10矩阵。我想在C中打印它们,就像它们在文本文件中出现的那样。所以我的代码是这样的:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
char number[100];
FILE *mz = fopen("maze.txt", "r");
while (!feof(mz)) {
fscanf(mz, "%s", number);
printf("%sn", number);
}
fclose(mz);
}
但输出是100x1矩阵,而不是10x10。打印普通的10x10矩阵应该怎么做?
"%s"
不读取行
"%s"
跳过前导空白,然后读取无限数量的非空白字符。
如果文件输入的行中有空格,整行将不会被读取为一个字符串。
使用fgets()
将一行读入字符串
while (!feof(mz))
错误
不要这样做。
如果没有宽度限制,请勿使用"%s"
读取
没有宽度的"%s"
比gets()
差。
建议修复
#include <stdio.h>
#define LINE_LENGTH 100
int main(void) {
FILE* mz = fopen("maze.txt", "r");
// Did open succeed?
if (mz) {
char number[LINE_LENGTH*2]; // Use 2x the max amount expected.
while (fgets(number, sizeof number, mz)) {
printf("%s", number);
}
fclose(mz);
}
}