C语言笔记——gets_s, fgets, puts函数
来源:互联网 发布:虚拟拍照软件 编辑:程序博客网 时间:2024/06/06 18:48
1. gets_s——相当于scanf
用法:
char ex[5];
gets_s(ex); 相当于 scanf("%s", ex); // 一旦输入超过4字节(末尾的'\0'占去1字节)就会出错
2. fgets是gets_s和scanf的改进。
用法:
fgets(ex, 5, stdin); // 从标准输入流中读取5字节(包括'\0')到数组ex中,超出就自动截断,不会出错。
但是fgets有一个缺点,看底部的C程序和下面5张结果图就明了了(第一行和第二行分别代表输入输出值):
缺点是:
算上'\0'和输入的字符数共占的内存,如果还剩空间,就会在'\0'前放入'\n',使得字符串的长度多1字节。
解决办法:
一、在GetStrLength函数定义里修改。
存在'\n'就退出,字符个数少加一次。即把C程序第11和12行取消注释。
二、 封装fgets。
把'\n'替换成'\0'。(注意写上头文件string.h,因为用到了strchr函数)
// 封装fgets——参数1:接收字符串的字符数组,参数2:接收的字符总数void GetString(char[], int count);void GetString(char str[], int count){fgets(str, count, stdin);// 查找字符串str中首次出现字符\n的位置,返回首次出现\n的位置的指针// 如果str中不存在\n则返回NULL。char * find = strchr(str, '\n');if (find){*find = '\0';}}
3. puts——相当于printf
用法:
puts(ex); 相当于 printf("%s\n", ex); // puts自带一个回车\n
C程序:
#include <stdio.h>// 返回传入字符串的长度int GetStrLength(char[]);int GetStrLength(char str[]){int count = 0;while (str[count] != '\0'){//if (str[count] == '\n')//break; count++;}return count;}int main(){char ex[] = {'a', 'b', 'c', 'd', '\0'};fgets(ex, 5, stdin);puts(ex);int len = GetStrLength(ex);printf("字符串的长度为:%d\n", len);return 0;}
阅读全文
0 0
- C语言笔记——gets_s, fgets, puts函数
- gets,gets_s,fgets函数
- 【C语言学习笔记】输出函数puts()
- 黑马程序员-C语言回顾-fgets()和puts()函数
- C语言gets_s, _getws_s函数了解
- C语言的字符串输入函数gets_s()
- gets()gets_s()puts()函数的使用
- C语言基础—字符串输入输出函数puts和gets
- c语言fgets函数
- gets、fgets、gets_s、scanf函数学习总结
- C语言 gets(),puts()函数
- C++学习笔记——C语言中的fgets()函数
- C语言fgets函数了解
- C语言fgets函数了解
- c语言中的fgets函数
- C语言fgets函数了解
- C语言中的fgets函数
- C语言的字符串输出puts()函数
- 关于Mac上使用百度云下载速度慢的解决方案
- es5中严格模式相关问题
- HDU
- Ubuntu新手入门全攻略
- Android AsyncTask 源码解析
- C语言笔记——gets_s, fgets, puts函数
- Tensorflow-get_variable、Variable
- oracle表查询(六)
- LeetCode 7. Reverse Integer
- 简单介绍Java中Comparable和Comparator
- JSP基础(五)——JSP的指令元素
- B树
- hdu 6215 Brute Force Sorting
- Dell r510如何做Raid 0 和Radi 5