Чтение стандартного ввода в C - PullRequest
2 голосов
/ 12 мая 2011

У меня возникают проблемы при чтении с stdin.Я хочу прочитать неизвестные строки от stdin до ввода символа '.'.Не могли бы вы помочь мне с некоторыми примерами?

Ответы [ 2 ]

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

Не читать строки ... читать символы.

int ch;
while (1) {
    ch = getchar();
    if ((ch == EOF) || (ch == '.')) break;
    /* deal with ch */
}
if (ch == '.') {
    /* '.' detected */
}
1 голос
/ 12 мая 2011

Вы можете использовать что-то вроде этого. Есть более эффективные способы, но было бы неплохо начать.

#define BUFFER_SIZE 1024

int main(int argc, char *argv[])
{
    // declare buffer
    char str[BUFFER_SIZE];

    // read till .
    int idx = 0;
    register int cr;
    do {
          if ((cr = getchar()) == '.' || cr == 0 || cr == EOF)
              break;

          str[idx] = cr;
    } while(++idx != BUFFER_SIZE);

    if (idx != BUFFER_SIZE)
    {
        str[idx] = 0; // 0 terminate string replacing . by end of string
        printf("%s", str); // print the string
    }
    else
    {
        printf("Buffer overflow");
    }

    exit(0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...