【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 任意个整数求和 知识点:动态内存分配的概念和 ...
随机推荐
- UVA 674 (入门DP, 14.07.09)
Coin Change Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We ...
- Iphone CodeSign error: no provisioning profile at path 错
今天在退房手续,变化了profile,当再次进行整理编译项目时.就出现了这个问题,在xCode 6 开发环境下出现了, 出现这个错误提示Code Sign error: Provisioning pr ...
- Autofac 入门
Autofac 入门文档 原文链接:http://docs.autofac.org/en/latest/getting-started/index.html 在程序中使用Autofac的基本模式是: ...
- AC自己主动机
AC自己主动机 AC自己主动机是KMP和Trie的结合,主要处理多模板串匹配问题.以下推荐一个博客,有助于学习AC自己主动机. NOTONLYSUCCESS 这里另一个Kuangbin开的比赛,大家 ...
- 采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址
采用truelicense进行Java规划license控制 扩展可以验证后,license 开始结束日期,验证绑定一个给定的mac住址. Truelicense 它是一个开源java license ...
- hdu1506——Largest Rectangle in a Histogram
Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- Java基金会——JUnit
JUnit 測试的重要性毋庸质疑.但怎样使測试更加准确和全面.而且独立于项目之外而且避免硬编码,JUnit给了我们一个非常好的解决方式. 能够说JUnit是为单元測试而生的,一个Java语言的单元測试 ...
- 顺序表----java实现
最简单的数据结构--顺序表,此处以数组为例. 顺序表的优点:支持随机读取,内存空间利用率高. 顺序表的缺点:1.需要预先给出最大数据元素个数,这往往很难实现. 2.插入和删除时需要移动大量数据. Se ...
- 我学cocos2d-x (两) 采用Delegate(信托)
Delegate(信托)什么 Delegate是ios开发中的一个概念,主要是为了让类A中的功能,放到类B中来实现,这样能够合理的把功能划分到不同的文件里进行实现,从而更好的实现模块的分离.如UIAp ...
- Ubuntu 下一个disk清理保护
有很长一段时间ubuntu人,很多人会突然提示:磁盘空间不足1G. 然后很长一段时间分析..最近遇到的类别似问题.记录,如下面: 一个:.xsession-errors.old 能够在终端看到主用户文 ...