从C中的char中提取文本[关闭]

问题描述 投票:1回答:1

我是一名初学C程序员。最近我一直在尝试在C中练习使用字符串函数。

因此,我写了以下程序:

MessageDetector.c

#include <stdio.h>
#include <string.h>

int main(void) 
{
    char a[100] = "Alex:HeyGoodMorning!:1911hrs:0:1012:2017:::";
    char *p = strtok(a,":");
    char n[20];

    int i = 1;

    while(p != NULL) {
        strcpy(n,p);
        p = strtok(NULL,":"); //limit to characters before semi-colon
        i++;

        if (i = 2) { //after 2 occurrences of the semi-colon. print a string
            printf("%s\n",n);
            break;
        }
    }

    return 0;
}

我的程序输出如下:

Alex

但是,我希望程序输出

HeyGoodMorning!

我应该对上述计划做出哪些改变?非常感谢您的帮助

c string strtok
1个回答
1
投票

使用0初始化变量i并在此条件下使用比较而不是赋值

int i = 0;
//...
if(i == 2){//

考虑到strcpy的第一次调用是多余的。

实际上你可以在没有循环的情况下做同样的事情。例如

char a[100] = "Alex:HeyGoodMorning!:1911hrs:0:1012:2017:::";
char *p;

if ((p = strtok(a, ":")) && (p = strtok(NULL, ":")))
{
    puts(p);
}
© www.soinside.com 2019 - 2024. All rights reserved.