检查 .txt 文件的格式在 C 中是否有效?

标签 c validation

我试图确保我使用的 .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/

相关文章:

c - 套接字没有等待预期的 10 秒

c# - C# 和 C 之间的串行连接通信时遇到问题

javascript - 如何在更改 ngPattern 使用的正则表达式时立即重新验证

jquery validator - 仅验证可见元素

c# - ASP.NET Identity - 未调用自定义角色验证

c - 在C中按字典顺序排序

带有数据文件的 Python C 扩展

c - 在没有主体的 While 循环中从 FIFO(命名管道)读取

javascript - JS 文件中的 MVC 万无一失验证错误

javascript - 验证并显示表单数组 Angular 中特定表单 Controller 的错误消息