我正在尝试用 C 语言为一个类构建一个非常简单的解析器。它所要做的就是从输入文件中读取标志,确定该标志是否位于 int、char 或 float 之前,然后将 int/float/char 写入相应的 .txt 文件。例如 I 9898 将被打印到 int.txt。每当使用讲师提供的测试脚本时,我都会收到以下错误:
\n\nparser.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\nint 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}\nRun Code Online (Sandbox Code Playgroud)\n
将标准标头放在文件范围,而不是块范围:
#include <stdio.h>
int main(int argc, char *argv[])
{
...
Run Code Online (Sandbox Code Playgroud)