用 C 语言构建一个非常简单的解析器

Ben*_*kin 2 c parsing

我正在尝试用 C 语言为一个类构建一个非常简单的解析器。它所要做的就是从输入文件中读取标志,确定该标志是否位于 int、char 或 float 之前,然后将 int/float/char 写入相应的 .txt 文件。例如 I 9898 将被打印到 int.txt。每当使用讲师提供的测试脚本时,我都会收到以下错误:

\n\n

parser.c:1:1: error: unknown type name \xe2\x80\x98e\xe2\x80\x99\nparser.c:1:10: error: expected \xe2\x80\x98=\xe2\x80\x99, \xe2\x80\x98,\xe2\x80\x99, \xe2\x80\x98;\xe2\x80\x99, \xe2\x80\x98asm\xe2\x80\x99 or \xe2\x80\x98__attribute__\xe2\x80\x99 before \xe2\x80\x98on\xe2\x80\x99\nparser.c:1:10: error: unknown type name \xe2\x80\x98on\xe2\x80\x99

\n\n

这是我的代码,请告诉我。非常感谢:

\n\n
int main(int argc, char *argv[])\n{\n#include <stdio.h>\n    FILE *input = fopen("input.txt", "r");\n    FILE *ints.txt = fopen("ints.txt" "w");\n    FILE *chars.txt = fopen("chars.txt", "w");\n    FILE *floats.txt = fopen("floats.txt", "w");\n\n    char flag;\n    int ipint;\n    char ipchar;\n    float ipfloat;\n    int exitStatus = fscanf(input.txt, "%c", &flag);\n\n    while (exitStatus != EOF)\n    {\n        if (flag == I)\n        {\n            fscanf(input.txt, "%i", &ipint);\n            fprintf(ints.txt, ipint);\n        }\n        if (flag == C)\n        {\n            fscanf(input.txt, "%c", &ipchar);\n            fprintf(chars.txt, ipchar);\n        }\n        if (flag == F)\n        {\n            fscanf(input.txt, "%f", &ipfloat);\n            fprintf(floats.txt, ipfloat);\n        }\n    }\n    fclose(input.txt);\n    fclose(ints.txt);\n    fclose(floats.txt);\n    fclose(chars.txt);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

oua*_*uah 5

将标准标头放在文件范围,而不是块范围:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
    ...
Run Code Online (Sandbox Code Playgroud)