串数据类型是一个重要的,但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语言的日常实践(八)】弦的更多相关文章

  1. 【C语言的日常实践(十四)】constkeyword详细解释

    const是C语言keyword,它定义一个变量不同意变更.使用const在一定程度上,可以提高节目的安全性和可靠性.其他.解const的作用,在看别人的代码时,对理解对方的程序有一定帮助. 1.co ...

  2. 【C语言的日常实践(十二)】命令行参数

    C计划main函数有两个参数.文章1一个通常被称为argc,它代表的命令行参数的个数. 第2个通常称为argv.它指向一组參数值. 指针数组:这个数组的每一个元素都是一个字符指针,数组的末尾是一个NU ...

  3. 【C语言的日常实践(十六)】字符串输出功能puts、fputs和printf

    C有三个标准库函数的输出字符串puts().fputs()和printf(). 1.puts()函数仅仅须要给出字符串參数的地址. #include <stdio.h> int puts( ...

  4. 20145203盖泽双 《网络对抗技术》实践八:Web基础

    20145203盖泽双 <网络对抗技术>实践八:Web基础 1.实践目标 (1)编写Web前端--含有表单的HTML代码. (2)编写Web前端--javascipt验证用户名.密码的代码 ...

  5. 日常英语---八、REBOOT - What is the difference? -MapleStory

    日常英语---八.REBOOT - What is the difference? -MapleStory 一.总结 一句话总结: trade transfer drop_rate equipment ...

  6. C语言高速入门系列(八)

    C语言高速入门系列(八) C语言位运算与文件 本章引言: 在不知不觉中我们的C高速入门系列已经慢慢地接近尾声了,而在这一节中,我们会对 C语言中的位运算和文件进行解析,相信这两章对于一些人来说是陌生的 ...

  7. nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点

    nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点 优点 所有的 web开发的点都考虑到了 agent 很有特色 文件夹规划到位 扩展能力优秀 缺点 最大的问题在于: 使用 ...

  8. C语言的OOP实践(OOC)

    OOC 面向对象 C 语言编程实践 - 文章 - 伯乐在线http://blog.jobbole.com/105105/ ---硬着头皮看完了,但是感觉还是抽象有不理解的地方,感觉用C实现OOP好难啊 ...

  9. C语言程序设计II—第八周教学

    第八周教学总结(15/4-21/4) 教学内容 本周的教学内容为: 8.4 电码加密 知识点:指针与字符串,重难点:字符指针与字符串的关联和区别: 8.5 任意个整数求和 知识点:动态内存分配的概念和 ...

随机推荐

  1. poj 1959 Darts 同意反复组合

    水题.直接贴代码. //poj 1959 //sep9 #include <iostream> using namespace std; int n; int f[128]; int so ...

  2. 集群部署及测试SolrCloud-5

    SolrCloud-5.2.1 集群部署及测试   一. 说明 Solr5内置了Jetty服务,所以不用安装部署到Tomcat了,网上部署Tomcat的资料太泛滥了. 部署前的准备工作: 1. 将各主 ...

  3. 8皇后-----回溯法C++编程练习

    /* * 八皇后问题回溯法编程练习 * 在8×8的棋盘上,放置8个皇后,两个皇后之间不能两两攻击 * 也即,直线,垂直45度.135度方向不能出现两个皇后 * * copyright Michael ...

  4. base 64 编解码器

    base 64 编解码 1. base64的编码都是按字符串长度,以每3个8bit的字符为一组, 2. 然后针对每组.首先获取每一个字符的ASCII编码. 3. 然后将ASCII编码转换成8bit的二 ...

  5. 如何使用Eclipse API 提供 org.eclipse.wst.wsdl 要解决阅读WSDL档?

    相对而言.Eclipse API中国的数据是比较小的.但Eclipse的API提供了许多的.非常强大. 实例,eclipse的Eclipse API 提供 org.eclipse.wst.wsdl包裹 ...

  6. 流动python - 什么是魔术方法(magic method)

    我们经常看到各种各样的方法已经被包围了由双下划线,例如__init__,他们是魔术方法. 魔术方法python语言预订好"协议",在不同情况下不同的魔术方法,是隐式调用.我们重写这 ...

  7. POJ 2217 Secretary (后缀数组)

    标题效果: 计算两个公共串串最长的字符串的长度. IDEAS: 这两个组合的字符串. 然后直接确定运行后缀数组height 然后,你可以直接扫描一次height .加个是不是在一个串中的推断就能够了. ...

  8. ASP.NET分页正品—分页真

     承接上篇博文<ASP.NET真假分页-假分页>:http://blog.csdn.net/u010773667/article/details/38845009,继续解说ASP.NE ...

  9. LeetCode Solutions : Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...

  10. DataTable填补了实体类返回泛型集合

    坤哥见我昨天找了一段代码,如下面: 略微解释下,这段代码时D层查询结束后,将datatable查询到的结果赋值给实体对象的属性,然后返回实体的过程.坤哥看了之后问我,假设实体有500多个属性,难道也要 ...