【C语言】gets 和 puts 函数

gets 函数

scanf函数在读取字符串时遇到空格就认为读取结束,不利于读取一行字符串,gets函数就是为了解决这个问题的。

gets 函数的格式:

char *gets(char *str);

gets 函数从 STDIN 读取字符并把它们加载到str中,直到遇到 '\n'。gets 函数不会存储 '\n',而是将其翻译为空字符 '\0'。

如果成功,该函数返回 str。如果发生错误或者到达文件末尾时还未读取任何字符,则返回 NULL。

puts 函数

puts 函数的格式:

int puts(char *str);

puts 函数将 str 写入 STDOUT 中。
puts 函数只能用于输出字符串,同时多打印一个换行符。

puts(c); //等价于 printf("%s\n",c);

若字符串成功输出,则返回值为非负数,通常为0;若字符串输出失败,则返回值为 EOF,通常为-1。

举例

#include <stdio.h>

int main() {
    char c[20];
    gets(c);
    puts(c);
    return 0;
}

注意点

#include <stdio.h>
#include <stdlib.h>

int main() {
    int size;
    scanf("%d",&size);
    char *p;
    p=(char*)malloc(size);

    //若不支持fflush(stdin)清空标准输入缓冲区操作
    char c;
    scanf("%c",&c); //清空标准输入缓冲区中的'\n'

//    gets(p);
    fgets(p,size,stdin); //gets被去掉是因为不安全,会访问越界
    puts(p);
    return 0;
}

scanf("%d",&size) 后 STDIN 会残留 '\n',需要清空 STDIN。否则 gets(p) 会读取到 '/n',从而完成不了想要的操作。

posted @   hzyuan  阅读(523)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示