学习笔记13-C语言-字符串函数、缓冲区

字符串的常用函数:

#include<string.h>
size_t strlen(const char* s);
功能:计算字符串长度,但是结果不包括'\0'
返回值:返回字符串中字符的个数size_t str_len(const char* str)
{assert(NULL != str);const char* tmp = str;while(*tmp) tmp++;return tmp - str;
}char *strcpy(char* dest,const char *src);
功能:把src拷贝到dest中,相当于给dest赋值 = 
返回值:dest(链式调用)char* str_cpy(char* dest, const char* src)
{assert(NULL != dest && NULL != src);char* tmp = dest;while(*tmp++ = *src++);return dest;
}char *strcat(char *dest, const char *src);
功能:把src的内容追加到dest的后面,相当于dest +=
返回值: destchar* str_cat(char *dest, const char *src)
{assert(NULL != dest && NULL != src);char* tmp = dest;while(*tmp) tmp++;while(*tmp++ = *src++);return dest;
}char strcmp(const char *s1,const char *s2);
功能:比较两个字符串,根据字典序比较,谁在前谁小
返回值:s1==s2      0s1>s2       正数s1<s2       负数int str_cmp(const char *s1, const char *s2)
{assert(NULL != s1 && NULL != s2);while(*s1 && *s1 == *s2) s1++,s2++;//return *s1 - *s2;if(*s1 > *s2)return 1;else if(*s1 < *s2)return -1;return 0;
}    char strncmp(const char *s1,const char *s2,size_t n);
功能:比较前n个char *strncpy(char *dest,const char *src,size_t n);
功能:把src拷贝n个字符到dest中char *strncat(char *dest, const char *src,size_t n);
功能:追加n个字符到dest后面练习1:实现strlen、strcpy、strcmp、strcat四个函数#include<stdlib.h>
int atoi(const char *nptr);
功能:把字符串转成int类型long atol(const char *nptr);
功能:把字符串转成long类型long long atoll(const char *nptr);
功能:把字符串转成long long类型double atof(const char *nptr);
功能:把字符串转成double类型#include<string.h>
char *strstr(const char *haystack,const char *needle);
功能:查找haystack中是否有needle
返回值:返回needle在haystack中第一次出现的位置,如果找不到NULLsprintf:字符串拼接(各种类型数据合成字符串)int sprintf(char* str,const char* format,...);功能:把各种类型的数据输出到str中。返回值:字符串长度sscanf:字符串的解析(分解成各种类型字符串)
int sscanf(const char* src,const char* format,...);
功能:从src中按照格式读取数据
返回值:成功读取到的变量个数

输出缓冲区:

程序输入的数据并不能立即显示到屏幕上,而是先存储到输出缓冲区中,当满足一定条件时才会显示出来:1、遇到\n后2、当程序结束时3、遇到输入语句4、当输出缓冲区满4k时5、手动刷新 fflush(stdout)缓冲区机制是可以提高数据的读写速度,可以让告诉的CPU与低速的输入输出设备之间协调工作。

输入缓冲区:

程序并不会立即获取到从键盘上输入的数据,而是当按下回车键时程序才会冲输入缓冲区中读取数据。
1、当读取整型或者浮点型数据时,而缓冲区中的数据    是字母或符号时,此时,读取失败,而且数据会残留在缓冲区,
就会影响接下来所有数据的读取
2、fgets(str,10,stdin)可以指定读取size-1个字符,如果有多余的字符会残留在输入缓冲区中。
3、当先输入整型或者浮点型数据,在立即输入字符、字符串时,会有一个\n残留在输入缓冲区,影响了下面的字符、字符串的输入方法1:必须确定输入缓冲区中有垃圾数据才能使用scanf("%*[^\n]");   *表示缓冲区中接受一个字符并丢弃,只要这个字符不是\n,继续,如果是\n则停下scanf("%c");        丢弃一个字符,则丢弃的是\n方法2:只能在Linux系统下使用stdin->_IO_read_ptr = stdin->_IO_read_end;  方法3:根据scanf返回值判断是否读取成功,如果不成功则先清空缓冲区然后重新读取,直到成功为止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:

摘要&#xff1a;近期项目中&#xff0c;在做高级查询的时候有个条件是根据选择的字段&#xff0c;然后再选择字段的值为空和不为空做查询&#xff0c;在写SQL语句的时候费了很长时间&#xff0c;现在记录一下&#xff0c;方便日后查看&#xff1a; 一&#xff1a;查询字符串类…

学习笔记14-C语言-小项目-通讯录

通讯录&#xff1a; 要求&#xff1a; 姓名&#xff0c;性别、电话&#xff0c;最多储存50个联系人 功能&#xff1a;1、添加联系人2、按名字删除联系人3、按姓名修改联系人信息4、查找联系人&#xff0c;可通过电话&#xff0c;名字查找&#xff0c;支持模糊查找5、显示所有联…

学习笔记15-C语言-预处理指令、条件编译、头文件

预处理指令&#xff1a; 程序猿编写的代码不是标准C代码&#xff0c;并不能被真正的编译器索编译&#xff0c;需要一段程序把代码翻译一下。 翻译的过程叫做预处理&#xff0c;被翻译的代码叫做预处理指令&#xff0c;以#开头的都是预处理指令查看预处理的过程&#xff1a;gcc…

学习笔记16-C语言-小项目-使用Makefile完成2048

Makefile: Makefile是一系列编译指令组成的可执行文本&#xff0c;也叫做编译脚本。 在终端执行make命令会自动执行Makefile脚本中的编译命令&#xff0c; 而且它还可以根据文件的最后修改时间来判断哪些文件是否需要重新编译、哪些文件不需要重新编译&#xff0c;从而大大提高…

学习笔记17-C语言-结构、联合、枚举

结构&#xff1a; struct 结构是由程序猿自己设计的一种数据类型&#xff0c;用于描述一个事务的各项数据&#xff0c;由若干个不同的基础数据类型组成。设计结构&#xff1a;struct 结构体名{类型 成员名&#xff1b;...}&#xff1b;定义结构体变量struct 结构体名 变量名&a…

Maven 3.0.5 安装和配置:

摘要&#xff1a;现在的Web项目越来越多的都用maven管理了&#xff0c;所以我也抽时间学习学习&#xff0c;为了赶上时代&#xff01; 一&#xff1a;首先到maven官网&#xff1a;http://maven.apache.org/&#xff0c;然后选择相应的版本下载&#xff0c;我这里下载的是maven…

学习笔记18-C语言-文件

文件的分类&#xff1a; 文本文件&#xff1a; 存储的是ASCII码值的二进制 二进制文件&#xff1a; 存储的是数据的补码文件IO&#xff1a; FILE *fopen(const char *path, const char *mode); 功能&#xff1a;打开或者创建文件 path&#xff1a;文件的路径 mode&#x…

使用INNER JOIN ON 多表关联查询,获取指定用户下指定权限的资源SQL:

摘要&#xff1a;最近在看一个开源框架&#xff0c;其中用户&#xff0c;角色&#xff0c;资源&#xff0c;这块我感觉比较重要&#xff0c;所以就自己也模仿着写了下&#xff0c;其中在获取指定用户下的权限资源的时候遇到问题了&#xff0c;开始时&#xff0c;我首先想到的方…

Maven学习记录之maven基本操作命令,maven本地工厂的创建,maven骨架的生成,以及在eclipse中创建maven工程:...

摘要&#xff1a;今天又学习了一下maven&#xff0c;之前是下载并安装和配置好了maven的环境&#xff0c;今天主要学习的内容包括&#xff1a;maven本地工厂的创建&#xff0c;maven骨架的生成命令&#xff0c;maven在dos下创建maven工程&#xff0c;以及在eclipse中创建mavne工…

Oracle中通过游标执行带参数的存储过程实现解析CLOB字段内的xml字符串:

摘要&#xff1a;近来之前的项目数据出现了问题&#xff0c;原因是由于之前在设计数据库的时候把时间字段设置成了字符串格式&#xff0c;所以给后期的数据操作带来了很大的麻烦&#xff0c;这里提醒一下各位程序猿&#xff0c;以后在开发项目的时候时间字段一定要是时间字段&a…

Eclipse中使用Checkstyle,checkstyle插件检查java代码的自定义配置文件:

摘要&#xff1a;近来项目组在搞代码检查&#xff0c;所以领导让把checkstyle这个插件搞明白&#xff0c;现在我把我们写的自定义的checkstyle.xml文件记录一下&#xff0c;以便大家可以一起使用&#xff1a; 一&#xff1a;要使用checkstyle插件在eclipse中检查java代码&…

Linux 下安装 jdk-7u75-linux-x64.gz,jdk1.7.0_75,jdk1.7步骤:

摘要&#xff1a;近来又用到了Linux系统&#xff0c;所以就又新装了一个虚拟机和CentOS 6.4来用&#xff0c;搞开发的程序猿们可能都知道&#xff0c;在现在的很多企业中&#xff0c;生产环境大多都是Linux服务器&#xff0c;并且用的比较多的大都是CentOS&#xff0c;Red hat系…

Win7+VMware10.0+CentOS 6.4+Tomcat,Win7访问不了CentOS6.4上的Tomcat

摘要&#xff1a;今天在linux下安装Tomcat后&#xff0c;在虚拟机本地通过:http://localhost:8080/可以访问安装好的Tomcat服务器&#xff0c;但是在本机就不能访问&#xff0c;前提是在本机下可以ping的通虚拟机的IP地址的&#xff0c;最后经过Google&#xff0c;发现说可能是…

Linux下配置OpenLDAP服务记录

摘要&#xff1a;最近部门需要整合所有的系统&#xff0c;所以领导说要通过OpenLdap数据库来实现对所有系统的统一管理&#xff0c;所以需要在服务器上配置一下LDAP服务&#xff0c;我们这里选择的是OpenLdap服务&#xff0c;我在网上搜索了很多&#xff0c;开始都没有配置成功…

Linux下配置CollabNet Subversion Edge

摘要&#xff1a;最近一直都在搞一下管理员的工作&#xff0c;今天又搞了svn的管理工具CollabNetSubversionEdge&#xff0c;网上也有很多例子&#xff0c;但是很多都是可以访问到web界面&#xff0c;但是不能启动版本库的服务&#xff0c;所以我经过多次尝试&#xff0c;终于解…

养成让自己进步的10个习惯

养成让自己进步的10个习惯 1.永远不说不可能。"办法总比问题多" 2.凡事第一反应找方法&#xff0c;不是找借口。"不要推卸责任" 3.养成记录习惯&#xff0c;不太依赖脑袋。"好记性不如烂笔头" 4.每天出门照镜子&#xff0c;给自己自信的微笑。&…

Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串:

摘要&#xff1a;之前在项目中使用到了Oracle数据库中通过触发器去调用存储过程执行数据解析并Update到对应的数据表中&#xff0c;但是&#xff0c;经过一段时间的测试使用发现&#xff0c;如果job那天停掉了&#xff0c;然后你再重新新建job的话&#xff0c;这时候可能会有很…

Maven配置nexus

摘要&#xff1a;近来一直在搭建maven结构的开发框架&#xff0c;其中这个过程中用到了nexus私服&#xff0c;这里我把我经过查询总结的最终的方式记录一下&#xff0c;以便后面忘记了&#xff1a; 一&#xff1a;nexus私服的安装(略) 二&#xff1a;仓库的讲解如下图: 1、ho…

Maven项目发布的配置

摘要&#xff1a;要想发布maven结构的项目到nexus私服上&#xff0c;可以通过两种方式来&#xff0c;一种是在项目的pom.xml文件里面配置&#xff0c;另一种是通过命令的方式发布到nexus私服上&#xff0c;但是这种方式的前提也得在settings.xml文件配置用户: 一&#xff1a;M…

MariaDB通过命令行的方式导出指定数据库和还原指定数据库

摘要&#xff1a;今天由于需要需要从本地导出一份VP系统的数据库脚本&#xff0c;以前我都是通过工具直接导出&#xff0c;现在有同事说可以通过mysql的命令方式导出&#xff0c;我试了一下&#xff0c;可以&#xff0c;现在记录一下&#xff01; 一&#xff1a;在MariaDB的安装…