我似乎无法弄清楚,如何正确读取具有以下外观的 .txt 文件:(示例)
+ 1
+ 2
- 2
+ 5
p -1
? 5
等等... 我现在需要的是存储运算符/ token ,它可以是 '+' '-' 'p' 或类似的东西,以及 两个不同变量 后面的 int 因为我需要检查它们稍后。
char oprtr[1];
int value;
FILE *fp = fopen(args[1], "r");
while(!feof(fp) && !ferror(fp)){
if(fscanf(fp, "%s %d\n", oprtr, &value) < 1){
printf("fscanf error\n");
}
if(strcmp(oprtr, "+") == 0){
function1(bst, value);
} else if(strcmp(oprtr, "-") == 0){
function2(bst, value);
} else if((strcmp(oprtr, "p") == 0) && value == -1){
function3(root);
//some other functions and so on...
}
在循环中打印出 oprtr 和 value 表明它们没有正确地显示为红色,但它确实可以编译。有人有解决方案吗?
最佳答案
你有单个字符,你可以使用 ==
来比较它们而不是 strcmp
。只需成对读取输入并使用 switch
作为示例。
char c;
int x;
while(fscanf(fp, "%c %d", &c, &x) == 2)
{ switch(c)
{ case '+': /* ... */
}
}
关于c - 无法读取 C 中的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065457/