我是新来的,对我的程序感到头疼,问题是我需要从键盘上获得输入,然后使用strtok分隔它,但必须使用4种不同的大小写分隔标记,在每种情况下,我都需要打印结果并将其保存为字符串,如下所示:
input String : Label Instruction #50,Y; Label <with>输出应如下所示:
Label: Label
Instruction: Instruction
Character [1]: #50
Character [2]: Y
Comentaries: Label <with>此外,它还必须能够识别指令是否遗漏,如下所示:
Input String: adda
Output String
Label: -----
Instruction: adda
Character 1: -----
Comentaries: -----我的代码可以接受第一个也是正确的指令,但是当我输入一个不正确的指令时,就像在第二个输入中一样,它会忽略它,并像第一个指令一样继续。有时,我会尝试使用if,以便能够用它的分隔符分隔每个标记,但每次我编译它时,它都会忽略if语句,不管我给它什么参数,我不知道还能做什么
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <ctype.h>
int main() { char word[256];
fgets(word,256,stdin);
char *token;
while (token != NULL){
char delimiter[]="\n , ;";
token=strtok (word,delimiter);
//if(token != "\n") //{
//char delimiter[]="\n , ;";
//token=strtok (word,delimiter);
//if (delimiter != " "||"\t" || "_")
printf("Label \"%s\"\n", token);
token = strtok (NULL, "\n , ;"); //(NULL, "_,.-")//}
//token=strtok (word,delimiter); //}
//printf("Label ----------\n");
if (delimiter != "\n"||"\t")//{
printf("Instruction \"%s\"\n", token);
token = strtok (NULL, "\n , ;"); //(NULL, "_,.-")//}
printf("Character \"%s\"\n", token);
token = strtok (NULL, "\n , ;"); //(NULL, "_,.-")
printf("Character 2 \"%s\"\n", token);
token = strtok (NULL, "\n , ;"); //(NULL, "_,.-")
printf("Comentaries \"%s\"\n",token);
token = strtok (NULL, ";");
// printf("Character 2\"%s\"\n", token);
// token = strtok (NULL, "\n , ;"); //(NULL, "_,.-")
token = NULL;}
//token = NULL;
//printf("Comentaries \"%s\"\n", token);
//token = NULL;
return(0);
}//注释是我尝试使它工作的所有失败的尝试=(有人能帮我吗?
发布于 2012-09-06 04:28:35
char *token;
while (token != NULL){token是在哪里初始化的?
然后:
if (delimiter != "\n"||"\t")您只比较if控制表达式中的指针:使用strcmp函数比较字符串。
发布于 2012-09-06 07:32:33
我可以看到您的代码中存在各种问题,如下所示:
1.您的while循环基于未初始化的token。最好使用do/while。
2.delimiter为字符串,无法使用!=运算符进行比较。使用strcmp/strncmp。
3.如果每次都分配相同的值,那么在每次迭代中检查定界符的意义是什么?我不确定你这样做的目的是什么。时,delimiter的值不会在调用strtok时更改。
4.在每次调用strtok之前,token应该通过NULL检查,因为您可以输入“错误”字符串。
5.它没有什么问题,但是当您可以简单地执行scanf时,为什么要使用fgets来从标准输入中获取输入
希望上面能解决你的问题。
https://stackoverflow.com/questions/12289236
复制相似问题