【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 @ 2024-01-12 12:43  hzyuan  阅读(725)  评论(0)    收藏  举报