Я хотел бы знать, как я могу сохранить ввод из текста, разделенного точкой с запятой, если некоторые поля отсутствуют - PullRequest
0 голосов
/ 30 января 2020

Как я могу пропустить scanf, если отсутствует какое-либо поле, например, между "oeb" и "7"?

#include <stdio.h>

int main ()
{
    int,a,b,c;
    char str1[200];
    char str2[200];
    char str[] ="1;2;oeb;;7;ed";
    scanf("%d;%d;%[^;];%d;%[^\n]",&a,&b,str1,&c,str2);
    return 0;
}

1 Ответ

0 голосов
/ 30 января 2020

Вы можете проверить, чтобы увидеть возвращаемое значение scanf, он возвращает количество успешных входов, вы можете проверить, все ли 5 ​​успешно завершены, например,

#include <stdio.h>

int main ()
{
    int,a,b,c;
    char str1[200];
    char str2[200];
    char str[] ="1;2;oeb;;7;ed";
    if (scanf("%d;%d;%[^;];%d;%[^\n]",&a,&b,str1,&c,str2) != 5) {
        // Error handling code here
    }
    else {
        // If everything is ok, continues here,
    }
    return 0;
}
...