下面就几个常用的字符串输入输出函数做个小小的总结TAT
使用时添加头文件:#include<stdio.h>.
scanf("格式控制字符串",变量地址列表):(printf),每次只能接收一个单词,无法接收整行数据
gets(字符数组名或指针):读取一整行的输入,以回车结束读取,如果用来保存接收到数据的空间不够大就会导致缓冲区溢出,覆盖缓冲区之后的数据,在C11中被废弃.gets()在接收数据时,输入换行符时会丢弃,不会被读取,没有换行的效果,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。成功,返回与参数相同的指针。
puts(缓冲区):将‘\0‘转换为回车换行(输出时将添加换行符),其调用方式为,puts(s):其中s为字符串字符输出时会在串尾添加换行符。
get_s(缓冲区,最大长度):缓冲区不够大时运行时会抛出异常,较为安全。
fgets(缓冲区,读入数据最大长度长度,标准输入流stdin/文件句柄):fgets()在接收数据时敲下的回车不会被丢弃,回车会被同样读取到缓冲区。如果缓冲区空间不够大,超出STRLEN-1(用来保存结束字符‘\n‘的1个字节)时,输出函数会分两次全部输出fgets()获取到的数据,第一次输出指定长度的数据,第二次输出超出stdin中超出的数据部分。成功,则返回第一个参数相同的指针。
fputs(缓冲区,标准输出流stdout):输出时不会添加换行符,同printf。
getchar():返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回-1。
测试代码
#include<stdio.h>
#define STRLEN 10
void main()
{
char str[STRLEN] = { 0 };
while (gets_s(str,STRLEN)!=NULL||str[0]!=‘\n‘)
{
printf(str);
puts(str);
}
printf("Done!");
while (fgets(str, STRLEN, stdin) != NULL || str[0] != ‘\n‘)
{
printf(str);
fputs(str, stdout);
}
return 0;
}