【问题标题】:How do I use getchar() like scanf()?如何像 scanf() 一样使用 getchar()?
【发布时间】:2015-03-16 01:54:45
【问题描述】:

我看到这个程序读取整个字符串:

#include <stdio.h>

int main(int argc, char *argv[]){
int something;
printf("Enter something \n");
while (scanf("%c", &something)==1) {
    printf("%c", something);
}
return 0;
}

当我输入hello world 时,它会输出hello world

谁能解释一下为什么不输出:

h
e
l
l
...

因为我认为循环一次遍历一个字母,所以我很困惑为什么它没有像那样输出。现在,我尝试编写一个使用 getchar 来做同样事情的程序:

#include <stdio.h>

int main()
{
    char c;

   printf("Enter character: ");
   c = getchar();

   printf("Character entered: ");
   putchar(c);

   return(0);
}

当我输入hello world 时,这个程序只会输出h。如何使用 getchar 做与第一个程序相同的事情?还有getchar和scanf有什么区别?

【问题讨论】:

    标签: c scanf getchar


    【解决方案1】:

    getchar() 一次输入一个字符。如果您希望它读取整个字符串或字符数组,您可以使用while loopfor loop 来逐个存储每个字符。例如:c[i]=getchar()for i = 0 to string length,或while c[i]!='\n'

    【讨论】:

      【解决方案2】:

      在第一个程序中,问题是行

      printf("%c", something);

      它缺少一个换行符,应该是

      printf("%c\n", something);
      

      如果你想每行打印一个字符。

      第二个问题是你用 getchar() 函数只读取一个字符。您无法使用 getchar() 在同一行读取整个字符串,您可以尝试使用 get(char* s) 代替。你需要循环 putc() 来转储所有的字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多