C: игнорирование строки комментария во входном файле - PullRequest
4 голосов
/ 07 мая 2011

я использую функцию fscanf для обработки ввода.теперь во входных данных каждая строка, начинающаяся с #, должна игнорироваться.Как я могу игнорировать полную строку?например, этот ввод:

#add some cars
car add 123456 White_Mazda_3 99 0
car add 123457 Green_Mazda_3 101 0
car add 111222 Red_Audi_TT 55 1200

#let see the cars
report available_cars

#John Doe takes a white mazda
customer new 123 JohnDoe
customer rent 123 123456

#Can anyone else take the mazda?
report available_cars

#let see Johns status
report customer 123

, как вы видите, комментарии могут различаться по длине, а команды различаются по своей структуре ... Есть ли какой-нибудь способ различить две строки?или способ узнать, когда мы находимся в конце / начале строки?

Ответы [ 2 ]

4 голосов
/ 07 мая 2011

вместо использования fscanf(), прочитайте строки с fgets() и используйте sscanf() для замены fscanf().

char s1[13], s2[4], s3[17], s4[43];
char line[1000];
while (fgets(line, sizeof line, stdin)) {
    if (*line == '#') continue; /* ignore comment line */
    if (sscanf(line, "%12s%3s%16s%42s", s1, s2, s3, s4) != 4) {
        /* handle error */
    } else {
        /* handle variables */
    }
}
2 голосов
/ 07 мая 2011

Используйте fgets() вместо fscanf() для линейно-ориентированного ввода вместо ввода в свободной форме.

...