我如何使用像scanf()这样的getchar()?

时间:2015-03-16 01:54:45

标签: c scanf getchar

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

#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之间有什么区别?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  

printf(“%c”,某事);

它缺少换行符,应该是

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

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

第二个问题是你只使用getchar()函数读取一个字符。你不能用getchar()在同一行读取整个字符串,你可以试试gets(char * s)。你需要遍历putc()来转储所有的字符。