我试图确保我使用的 .txt 文件具有某种格式,例如 4 个字符 x 4 个字符。作为一个例子,我有 example1.txt ,它可能看起来像这样:
....
....
....
....
我使用fscanf()
读取文件并将其存储在数组中,如下所示 ./myprogam < example1.txt
:
char myArray[4][4] = {""};
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
fscanf(stdin, "%c ", &myArray[i][j]);
}
}
所以我想我可以创建一个函数来检查 myArray
的每个单元格是否存在是否已填充字符,如果没有,则它不是有效的格式,如下所示:
checkArray(char myArray) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (myArray[i][j] == '\0') return 0;
}
}
return 1;
}
这似乎可行,但我认为可能有“更好”的方法来做到这一点?
最佳答案
对于初学者,我会使用 fgets
读入六字符缓冲区。这使得很容易看出一行是否长于四个字符,因为如果行更长,那么第五个字符(索引 4 处的元素)将不是是换行符。请小心最后一行,但如果没有结束换行符,第五个元素可能是终止符。
要检查是否有超过四行,在使用 fgets
读取四行后,我只需尝试读取另一个单个字符。如果我没有得到文件结尾,则该文件包含超过四行。
最后,如果每一行的实际内容必须遵循某种特殊格式,我会在检查文件本身是否正常后检查(上面两段)。为此,需要知道实际内容是什么。
请注意,这只是检查文件是否包含 4x4 字符矩阵的一种方法。扩展到 XxY 矩阵很容易,但如果您有任何其他类型的格式,它根本不起作用。
关于检查 .txt 文件的格式在 C 中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35385039/