c中的输入输出功能

时间:2014-11-10 18:01:00

标签: c

#include<stdio.h>
#include<conio.h>
void main()
{
    clrscr();
    char s[20];
    for(int i=1;i<=3;i++)
    {
        printf("enter a name \n ");        // printf & scanf
        scanf("%s",&s);
        printf("the names are %s \n",s);
    }
    for(int j=1;j<=3;j++)
    {
        puts("enter a name \n ");
        gets(s);                           // puts and gets
        puts(s);
    }
    char ch='a';
    putchar(ch);                           // putchar and getchar
    ch = getchar();
    getch();
}

printf语句有重复(三次)......任何人都能解释一下吗?

输出如下:

enter name
my name is alex
the names are my
enter a name
the names are name
enter a name
the names are is
enter a name
 alex
enter a name
alex again
enter a name
alex twice
alex twice

1 个答案:

答案 0 :(得分:0)

scanf

%s将一直读到第一个空格字符。因此,您在my name is alex的4个调用空间中读取您的输入scanf,这将使您的输出看起来很奇怪。如果要读取直到行尾(http://en.cppreference.com/w/cpp/string/basic_string/getline

,您可能需要考虑使用函数getline

请注意,这最初也被标记为c ++,所以我假设OP也可以使用c ++库。