在C中读取stdin

时间:2011-05-12 10:18:00

标签: c stdin

当我试图从stdin读取时,我遇到了一些麻烦。我想要做的是从stdin读取未知行,直到引入字符'.'。你能帮我举几个例子吗?

2 个答案:

答案 0 :(得分:4)

不读行...读取字符。

int ch;
while (1) {
    ch = getchar();
    if ((ch == EOF) || (ch == '.')) break;
    /* deal with ch */
}
if (ch == '.') {
    /* '.' detected */
}

答案 1 :(得分:1)

你可以使用这样的东西。有更有效的方法,但这可以开始。

#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);
}