Только для чтения первый символ с scanf - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь прочитать только первый символ каждой строки, используя scanf.

С этим вводом:

c ФАЙЛ: myciel3.col

cИСТОЧНИК: Майкл Трик (trick@cmu.edu)

c ОПИСАНИЕ: График, основанный на преобразовании Мичельского.

c Треугольник свободен (клика номер 2), но увеличивается

c раскраска

p edge 11 20

Извините за мой плохой английский.

int main(int argc, char *argv[]) {
    char option;
    int countC = 0;
    int countP = 0;
    while(scanf("%c",&option) != EOF) {
        if(option == 'c') countC++;
        else if (option == 'p') countP++;
    }
    printf("c: %d\tp: %d\n",countC, countP);
    return (0);
}

Я ожидаю выход C: 5 и P: 1, но фактический выход составляет c: 15 p: 2

1 Ответ

2 голосов
/ 24 марта 2019

Ваш код читает каждый введенный символ, а не первый символ каждой строки.

Используйте fgets или любую другую функцию, которая получает строку.

#include <stdio.h>

int main(int argc, char *argv[]) {
    char option[255];
    int countC = 0;
    int countP = 0;
    while(fgets(option, 255, stdin) != NULL) {
        if(option[0] == 'c') countC++;
        else if (option[0] == 'p') countP++;
    }
    printf("c: %d\tp: %d\n",countC, countP);
    return (0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...