码迷,mamicode.com
首页 > 其他好文 > 详细

C字符串输入输出函数

时间:2017-04-18 21:51:54      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:缓冲区   覆盖   指针   puts   can   长度   调用   har   文件句柄   

下面就几个常用的字符串输入输出函数做个小小的总结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;

}

C字符串输入输出函数

标签:缓冲区   覆盖   指针   puts   can   长度   调用   har   文件句柄   

原文地址:http://www.cnblogs.com/jinpao/p/6716533.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!