IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言-输入输出函数 -> 正文阅读

[C++知识库]C语言-输入输出函数

//string.c 字符串函数
?1.strlen()函数-统计字符串长度;
? 返回值为 unsigned int;
? char *string;
? strlen(string);

?2.strcat()函数-拼接两个字符串,类型char *;
? char *strcat(char *restrict s1,const char *restrict s2);
? 该函数把s2指向的字符串拷贝至s1指向的字符串末尾。s2字符串
? 的第一个字符将覆盖s1字符串末尾的空字符,该函数返回s1。
? char flower[10] = "Rose";
? char addon[] = "s smell like old shose."
? strcat(flower,addon);
? 缺点:无法检查第一个数组能否容纳第二个数组;

?3.strncat()函数-strcat()升级版;
? char *strncat(char *restrict s1,const char *restrict s2,size_t n);
? 该函数把s2指向的字符串的n个字符拷贝至s1指向的字符串末尾。s2字符串
? 的第一个字符将覆盖s1字符串末尾的空字符,不会拷贝s2字符串中空字符和
? 后面的字符,并在拷贝字符的末尾添加一个空字符,该函数返回s1。
? char flower[10] = "Rose";
? char addon[] = "s smell like old shose."
? int size = 13;
? strncat(flower,addon,size);//size指定了最大添加参数;
? 在加入第13个字符或遇到'\0'时停止;

?4.strcmp()函数-俩字符串作比较;
? int strcmp(const char *s1,const char *2);
? 若俩字符串参数相同,函数返回0,
? 否则返回非零值;若比较的字符串不同:
? strcmp("A","A") is 0
? strcmp("A","B") is -1
? strcmp("B","A") is 1
? strcmp("Z","a") is -1
? strcmp("apples","apple") is 1
? 在字母表第一个字符串位于第二个字符串前面,返回负数;
? 反之,返回正数:(根据ASCII比较)
? #define answer "Grant"
? char try[size] = "Grant";
? strcmp(answer,try);

?5.strncmp()函数-可以比较第三个参数指定的字符数;
? int strncmp(const char *s1,const char *s2,size_t n);
? 在比较n个字符后或者遇到'\0'停止比较。
? const char *list = {"astronomy"};
? strncmp(list,"astro",5)//只比较前五个字符;

?6.strcpy()函数-拷贝字符串(包括空字符);
? char *strcpy(char *restrict s1,const char *restrict s2);
? 返回类型为char *,第一个字符的地址s1;
? char target[20];
? strcpy(target,"Hi ho!");
? 缺点:不能检查目标空间是否容纳源字符串的副本;

?7.strncpy()函数-更谨慎的选择;
? char *strncpy(char *restrict s1,const char *restrict s2,size_t n);
? 返回类型为char *,第一个字符的地址s1;第三个参数指明可拷贝的最大字符数;
? 该函数不会拷贝空字符后面的字符,若源字符串的字符少于n个,目标字符串就
? 以拷贝的空字符结尾。若源字符串>=n个,不拷贝空字符。
? char target[20];
? strcpy(target,"Hi ho!",2);

?8.strpbrk()函数
? char *strpbrk(const char *s1,const char *s2);
? 若s1字符中包含s2字符串中的任意字符,该函数返
? 回指向s1字符串首地址的指针;若在s1中为找到s2
? 中的字符,则返回空字符。

?9.strrchr()函数
? char *strrchr(const char *s,int c);
? 该函数返回s字符串中c字符的最后一次出现的位置
? (末尾的空字符也是字符串的一部分,所以在查找
? 范围内)。若没找到c字符返回空指针。

?10.size_t strlen()函数
? size_t strlen(const char *s);
? 该函数返回s字符串中的字符数,不包括末尾的空字符。

?11.strstr()函数
? char *strstr(const char *s1,const char *s2);
? 该函数返回指向s1字符串中s2字符串出现的首位置。
? 如果在s1中没有找到s2,返回空指针。

//字符串输入输出
?1.gets()函数-读取整行输入,直到遇到换行符;
? char *gets(char *str);
? 然后丢弃换行符,储存其与字符,并在末尾+'\0';
? 若读到文件结尾会返回空指针
? 缺点:无法检查数组是否能装得下输入行。
? eg:读取一行输入,打印一行该输入。
? char line[81];
? while (gets(line)) //与while (gets(line) != NULL)相同
??? ?put(gets);

?2.缓冲区溢出:多于的字符超出了指定的目标空间。
? 若这些多于字符只是占用了尚未使用的内存,就不会立即
? 出现问题,若它们擦写掉程序中其他数据,会导致程序异常中止。

?3.puts()函数-显示字符串,并在末尾添加换行符;
? int puts(const char *str);
? 执行成功返回非负数,执行失败返回EOF;

?4.fgets()函数-显示字符串,
? char *fegets(char *str,int n,FILE *stream);
? 从指定的流stream读取一行,存储在str所指向的
? 字符串内,当读取(n-1)个字符,或'\n'亦或到达
? 文件末尾停止。
? 返回地址与传入的第一个参数相同,但若读到文件
? 末尾或读取错误,返回空指针。

?5.fputs()函数-向指定文件写入一个字符串;
? 不自动写入字符串结束标记'\0',成功写入一个字符串后,
? 文件的位置指针自动后移,函数返回值为非负整数;否则返回EOF。
? fputs()会保留输入中的换行符。
? int fuputs(char *string,FILE *stream);
? eg:读取一行输入,打印一行该输入。
? char line[81];
? while (fgets(line,81,stdin))
??? ?fputs(line,stdout);
?
?6.空字符与空指针
????? 空字符('\0'):标记c字符串末尾的字符,对应字符
? 编码是0;由于其他字符的编码不可能是0,所以不可能
? 是字符串的一部分。
????? 空指针(NULL)有一个值,该值不会与任何数据的有效
? 对应。通常,函数使用它返回一个有效地址表示某些特殊
? 情况发生,例如遇到文件末尾或者未能按期执行。
????? 空字符是整数类型,占1字节;空指针是一个地址,通
? 常占4字节。

?7.gets_s()函数
? char *gets_s(char *str,int n);
? gets_s()只从标准输入中读取数据;
? gets_s()读到换行符,会丢弃它不储存它;
? gets_s()读到最大字符数都没有读到换行符,会执行
? 以下几步。首先把目标数组中是首字符设置为空字符,
? 读取并丢弃随后的输入直到读到换行符或文件末尾,
? 然后返回空指针。接着,调用依赖实现的“处理函数”,
? 可能会中止或退出程序。

?8.scanf()函数
? int scanf(const char *restrict format,...);
? scanf()返回成功读入的数据项数,读入数据时
? 遇到“文件结束”则返回EOF。

?9.printf()函数
? int printf(char *format...);
? printf()返回值为实际控制输出的字符数。
//其他
sizeof()函数;

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:00:37  更:2021-10-06 12:03:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 17:29:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码