您的位置:首页 > 编程语言 > C语言/C++

C语言学习笔记 lesson17 字符串处理函数之fgets与gets

2016-10-08 19:49 1091 查看

字符串输入函数

scanf 每次只能接收一个单词,不能接收整行的输入

gets函数用于接收整行的输入,导致缓存区溢出,在新标准中C11被废弃 自动过滤换行

fgets 用于接收整行输入.传递三个参数 (数据存储的空间,读入数据最大的长度,stdin) 会输出换行

比较fgets和gets

#include <stdio.h>

#define STRLEN 225

int main()

{

char str[STRLEN] = { 0 };

while (fgets(str,str,stdin)!= NULL &&str[0]!='\n')

{

printf(str);

}

printf("Done!");

while (gets(str,STRLEN)!=NULL&&str[0] != '\n')

{

printf(str);

}

return 0;
}

输入两次12345回车,再输入回车



fgets 输入换行 循环结束 fgets 会读取换行

gets 输入换行 循环无法结束 gets 不会读取换行符



比较fgets和gets

#include <stdio.h>

#define STRLEN 10

int main()

{

char str[STRLEN] = { 0 };

while (fgets(str,str,stdin)!= NULL &&str[0]!='\n')

{

printf(str);

}

printf("Done!");

while (gets_s(str,STRLEN)!=NULL&&str[0] != '\n')

{

printf(str);

}

return 0;

}

当输入长度超过10的字符串时,fgets会全部读取,但不是一次读取完。每次读取长度减1的字符串

使用gets_s 时会出现异常。

比较fgets和gets

#include <stdio.h>

#define STRLEN 10

int main()

{

char str[STRLEN] = { 0 };

while (fgets(str,str,stdin)!= NULL &&str[0]!='\n')

{

fputs(str,stdout);

puts(str)

}

return 0;

}



fputs直接输入原字符串

puts 先输出换行,再输出原字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: