Strtok + If Statement

Art*_*nez 1 c if-statement strtok

即时通讯新在这里和IM有我的计划很头疼的事情是,我需要从键盘得到一个输入,然后使用strtok的分离,但在使用4 diferent案件令牌分离,在每种情况下,我需要打印结果并将其保存为如下字符串:

input String : Label Instruction #50,Y; Label <with>
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

Label: Label
Instruction: Instruction
Character [1]: #50
Character [2]: Y
Comentaries: Label <with>
Run Code Online (Sandbox Code Playgroud)

它还必须能够重新确定是否错过了这样的指令:

Input String: adda
Output String
Label: -----
Instruction: adda
Character 1: -----
Comentaries: -----
Run Code Online (Sandbox Code Playgroud)

我的代码可以接受第一和正确的指令,但是当我在第二个输入键入如不正确一个它忽略它,并继续像第一atempt只是有时候ading,我已经tryed使用,如果能够给每个令牌的分隔符分隔但是,我编译它,它忽略了if语句,无论我给它什么参数我不知道还有什么做什么Heres我的代码

#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);
}
Run Code Online (Sandbox Code Playgroud)

//这些都是我试图让它发挥作用的失败尝试=(有人可以帮助我吗?

oua*_*uah 9

char *token;
while (token != NULL){
Run Code Online (Sandbox Code Playgroud)

在哪里token初始化?

然后:

if (delimiter != "\n"||"\t")
Run Code Online (Sandbox Code Playgroud)

您只是比较if控制表达式中的指针:使用strcmp函数来比较字符串.

  • 这也不是`||'的工作方式.你需要明确地比较`delimiter`到每一个. (2认同)