【C语言的日常实践(八)】弦
串数据类型是一个重要的,但C有没有明确的语言字符串数据类型。头文件string.h它包括大多数字符串处理函数。
故,有操作的串。通常包括string.h头文件。
1、字符串的长度:对字符串进行的操作中,常常要对它进行求长度的操作。字符串的长度就是它所包括的字符个数。size_t strlen(char const *string);
注意:strlen返回一个类型为size_t的值,它是一个无符号整数类型。在表达式中使用无符号数可能导致不可预料的结果。
如以下两条表达式并不相等:
if(strlen(x) >= strlen(y)) .... /*依照预想的那样工作*/
if(strlen(x) - strlen(y) >= 0).../*永远为真,strlen的结果是个无符号数,所以操作符>=左边的表达式也将是无符号数*/
size_t
strlen(char const *string)
{
int length; for(length = 0; *string++ != '\0';)
length++; return length;
}
2、复制字符串:用于复制字符串的函数时strcpy。原型例如以下:char *strcpy(char *dst, char const *src); 它把參数src字符串拷贝到dst參数。dst參数的曾经内容将被覆盖掉并丢失。即使新的字符串比dst原先的内存更短,因为新字符串以NUL字节结尾,所以老字符串最后剩余的几个字符也会被有效地删除,(事实上并为被删除。能够使用地址訪问)。
我们必须确保目标字符数组的空间足以容纳须要复制的字符串。假设字符串比数组长,多余的字符仍被复制,它们将覆盖原先存储于数组后面的内存空间的值。在使用该函数前确保目标參数足以容纳源字符串,就能够避免大量的调试工作。
#include <string.h>
#include <stdio.h> int
main(int argc, char **argv)
{
char message[] = "Original message";
printf("%c.\n", message[2]);//结果是Original中的i
strcpy(message, "Different");
printf("%s.\n", message);/*结果是Different,后面的message由于NUL的原因未显示*/
printf("%c.\n", message[2]);//结果是Different中的f
printf("%c.\n", message[12]);//结果是message中的s
return 0;
}
3、连接字符串:把一个字符串加入(连接)到还有一个字符串的后面。
原型:char *strcat(char *dst, char const *src); 该函数要求dst參数原先已经包括了一个字符串,它找到这个字符串的末尾,并把src字符串的一份拷贝加入到这个位置。
相同应该确保目标字符数组剩余的空间足以保存整个源字符串。
#include <string.h>
#include <stdio.h> int
main(int argc, char **argv)
{
char message[100];
strcpy(message, "Hello ");
strcat(message, "World.\n");
printf("message = %s",message);
return 0;
}
注意:strcpy和strcat函数都返回它们第1个參数的一份拷贝,就是指向目标字符数组的指针。在实际应用中,它们的返回值常常仅仅是简单的被忽略。
4、字符串比較:比較两个字符串涉及对两个字符串相应的字符逐个进行比較,直到发现不匹配为止。
原型:int strcmp(char const *s1, char const *s2);
假设s1小于s2,返回值小于0;
假设s1大于s2。返回值大于0;
假设s1等于s2,返回值等于0。
5、其它字符串函数
char *strncpy(char *dst, char const *src, size_t len);向dst写入len个字符。假设strlen(src)的值小于len,dst数组就用额外的NUL字节填充到len长度。假设strlen(src)的值大于或等于len,那么仅仅有len个字符被拷贝到dst中。注意,它的结果将不会以NUL字节结尾。
char *strncat(char *dst, char const *src, size_t len);
intstrncmp(char const *s1, char const *s2, size_t len);
版权声明:本文博主原创文章,博客,未经同意不得转载。
【C语言的日常实践(八)】弦的更多相关文章
- 【C语言的日常实践(十四)】constkeyword详细解释
const是C语言keyword,它定义一个变量不同意变更.使用const在一定程度上,可以提高节目的安全性和可靠性.其他.解const的作用,在看别人的代码时,对理解对方的程序有一定帮助. 1.co ...
- 【C语言的日常实践(十二)】命令行参数
C计划main函数有两个参数.文章1一个通常被称为argc,它代表的命令行参数的个数. 第2个通常称为argv.它指向一组參数值. 指针数组:这个数组的每一个元素都是一个字符指针,数组的末尾是一个NU ...
- 【C语言的日常实践(十六)】字符串输出功能puts、fputs和printf
C有三个标准库函数的输出字符串puts().fputs()和printf(). 1.puts()函数仅仅须要给出字符串參数的地址. #include <stdio.h> int puts( ...
- 20145203盖泽双 《网络对抗技术》实践八:Web基础
20145203盖泽双 <网络对抗技术>实践八:Web基础 1.实践目标 (1)编写Web前端--含有表单的HTML代码. (2)编写Web前端--javascipt验证用户名.密码的代码 ...
- 日常英语---八、REBOOT - What is the difference? -MapleStory
日常英语---八.REBOOT - What is the difference? -MapleStory 一.总结 一句话总结: trade transfer drop_rate equipment ...
- C语言高速入门系列(八)
C语言高速入门系列(八) C语言位运算与文件 本章引言: 在不知不觉中我们的C高速入门系列已经慢慢地接近尾声了,而在这一节中,我们会对 C语言中的位运算和文件进行解析,相信这两章对于一些人来说是陌生的 ...
- nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点
nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点 优点 所有的 web开发的点都考虑到了 agent 很有特色 文件夹规划到位 扩展能力优秀 缺点 最大的问题在于: 使用 ...
- C语言的OOP实践(OOC)
OOC 面向对象 C 语言编程实践 - 文章 - 伯乐在线http://blog.jobbole.com/105105/ ---硬着头皮看完了,但是感觉还是抽象有不理解的地方,感觉用C实现OOP好难啊 ...
- C语言程序设计II—第八周教学
第八周教学总结(15/4-21/4) 教学内容 本周的教学内容为: 8.4 电码加密 知识点:指针与字符串,重难点:字符指针与字符串的关联和区别: 8.5 任意个整数求和 知识点:动态内存分配的概念和 ...
随机推荐
- 匿名方法,Lambda表达式,高阶函数
原文:匿名方法,Lambda表达式,高阶函数 匿名方法 c#2.0引入匿名方法,不必创建单独的方法,因此减少了所需的编码系统开销. 常用于将委托和匿名方法关联,例如1. 使用委托和方法关联: this ...
- RSA算法加密解密
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1. jar 注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块 ...
- uva 1401 dp+Trie
http://uva.onlinejudge.org/index.php? option=com_onlinejudge&Itemid=8&page=show_problem& ...
- uitableView 选择跳过后, 跳回 颜色变化 问题
今天遇到这个问题 谁也因此没有满足这方面的需求 今天会见 网上办理登机手续 未找到 好 我只能说自己的问题 但 幸好,kai哥 就攻克了 ! 就是在- (void)tableView:(UITabl ...
- bash构造tmux显示tmux ssh状态
要求: 于tmux内部链接ssh什么时候, 假设有多个ssh主机. 我们要显示相应的主机ip要显示筛查 实现效果 编辑你的bashrc, 由于我习惯在root下操作, 所以/root/.bashrc. ...
- SDUT 2933-人活着系列Streetlights(最小生成树Kruskal+和理查德设置来实现)
人活着系列之Streetlights Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 人活着假设是为了家庭,亲情----能够说 ...
- 第三篇——第二部分——第四文 配置SQL Server镜像——非域环境
原文:第三篇--第二部分--第四文 配置SQL Server镜像--非域环境 本文为非域环境搭建镜像演示,对于域环境搭建,可参照上文:http://blog.csdn.net/dba_huangzj/ ...
- 第三篇——第二部分——第一文 SQL Server镜像简介
原文:第三篇--第二部分--第一文 SQL Server镜像简介 原文出处:http://blog.csdn.net/dba_huangzj/article/details/26951563 镜像是什 ...
- Java于 初始化序列?
我们正处于java于 Java中初始化的顺寻? java代码: package sru.love.c; class Person { String name = "Person"; ...
- HDU 4819 Mosaic D区段树
连接:pid=4819">http://acm.hdu.edu.cn/showproblem.php?pid=4819 意:给出一个800×800下面的矩阵.每次更新一个点的值为以这个 ...