C语言的puts(),gets(),putchar(),getchar()

穿精又带淫゛_ 提交于 2020-02-09 19:05:02

其实puts(),gets()属于字符串输入函数。

putchar()与getchar()属于字符输入函数。

1.字符函数

#include<stdio.h>
int main(){
char c;
printf(“请输入一个字符:”);
c=getchar();
putchar(c);
return 0;
}

 

 

 输出结果如下:记住下面输出的虽然是数字,本质上是字符。

 

2.字符串函数

#include<stdio.h>
int main(){
char str[20];
printf("请输入一组长度不长于20的字符串:");
gets(str);
puts(str);
return 0;
}

 

 

 

3.因为上面都是单次输入,所以不用考虑回车符滞留在内存所带来的错误,下面带来由于for循环带来的回车符所引起的错误:

#include<stdio.h>
int main()
{
    int i = 0;
    for (i = 0; i < 200; i++)
    {
        printf("请输入一个字符:");
        char c = getchar();
        putchar(c);
        printf("\n");

    }
    return 0;
}

 

你会发现虽然输出了正确结果,但是会多输出一个空白的,其实这个的就是回车。你第一次输入的时候输了一个字符‘2’,而且按了一下回车,所以此时你存入内存存了这两个字符,但是getchar();只能接受一个,并且是第一个字符,这样的话,内存中的回车符就滞留了。所以默认不用再输入一个字符给getchar(),因为回车符直接赋值给getchar()了,所以解决方法是在getchar()下面再加一个getchar()来消灭掉多余的回车符导致的错误。

修改后的代码:

#include<stdio.h>
int main()
{
int i = 0;
    for (i = 0; i < 200; i++)
    {
        printf("请输入一个字符:");
        char c = getchar();
        getchar();
        putchar(c);
        printf("\n");

    }
    return 0;
}

 

 

 4.因为gets与puts是字符串接收函数,所以没有getchar()那么矫情,所以不会有滞留问题

#include<stdio.h>
int main()
{
    int i = 0;
    for (i = 0; i < 200; i++)
    {
        char str[20];
        printf("请输入长度不长于20的字符串:");
        gets(str);
        puts(str);
    }
    return 0;
}

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!