Извлечение текста из символа в C

Я начинающий 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!

Какие изменения я должен внести в вышеуказанную программу? Ваша помощь очень ценится

1 ответ

Решение

Инициализируйте переменную i с 0 и использовать сравнение вместо присваивания в этом условии

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);
}
Другие вопросы по тегам