本章集中讨论字符串操作,包括拷贝字符串,拷贝字符串的一部分,比较字符串,字符串右对齐,删去字符串前后的空格,转换字符串,等等。C语言提供了许多用来处理字符串的标准库函数,本章将介绍其中的一部分函数。
在编写C程序时,经常要用到处理字符串的技巧,本章提供的例子将帮助你快速学会一些常用函数的使用方法,其中的许多例子还能有效地帮助你节省编写程序的时间。
6.1 串拷贝(strcpy)和内存拷贝(memcpy)有什么不同?它们适合于在哪种情况下使用?
strcpy()函数只能拷贝字符串。strcpy()函数将源字符串的每个字节拷贝到目录字符串中,当遇到字符串末尾的null字符(/0)时,它会删去该字符,并结束拷贝。
memcpy()函数可以拷贝任意类型的数据。因为并不是所有的数据都以null字符结束,所以你要为memcpy()函数指定要拷贝的字节数。
在拷贝字符串时,通常都使用strcpy()函数;在拷贝其它数据(例如结构)时,通常都使用memcpy()函数。
以下是一个使用strcpy()函数和memcpy()函数的例子:
#include<stdio.h>
#include<string.h>
typedefstructcust-str...{
intid;
charlast_name[20];
charfirst_name[l5];
}CUSTREC;
voidmain(void);
voidmain(void)
...{
char*src_string="Thisisthesourcestring";
chardest_string[50];
CUSTRECsrc_cust;
CUSTRECdest_cust;
printf("Hello!I'mgoingtocopysrc_stringintodest_string! ");
/*Copysrc_stringintodest-string.Noticethatthedestination
stringisthefirstargument.Noticealsothatthestrcpy()
functionreturnsapointertothedestinationstring.*/
printf("Done!dest_stringis:%s ",
strcpy(dest_string,src_string));
printf("Encore!Let'scopyoneCUSTRECtoanother. ");
prinft("I'llcopysrc_custintodest_cust. ");
/*First,intializethesrc_custdatamembers.*/
src_cust.id=1;
strcpy(src_cust.last_name,"Strahan");
strcpy(src_cust.first_name,"Troy");
/*Now,Usethememcpy()functiontocopythesrc-custstructureto
thedest_custstructure.Noticethat,justaswithstrcpy(),the
destinationcomesfirst.*/
memcpy(&dest_cust,&src_cust,sizeof(CUSTREC));
printf("Done!Ijustcopiedcustomernumber#%d(%s%s).",
dest_cust.id,dest_cust.first_name,dest_cust.last_name);
}
6. 2怎样删去字符串尾部的空格?
C语言没有提供可删去字符串尾部空格的标准库函数,但是,编写这样的一个函数是很方便的。请看下例:
#include<stdio.h>
#include<string.h>
voidmain(void);
char*rtrim(char*);
voidmain(void)
...{
char*trail_str="Thisstringhastrailingspacesinit";
/*Showthestatusofthestringbeforecallingthertrim()
function.*/
printf("Beforecallingrtrim(),trail_stris'%s'i",trail_str);
print("andhasalengthof%d. ",strlen(trail_str));
/*CallthertrimOfunctiontoremovethetrailingblanks.*/
rtrim(trail_str);
/*Showthestatusofthestring
aftercallingthertrim()function.*/
printf("Aftercallingrttim(),trail_stris'%s' ",trail_str);
printf("andhasalengthof%d. ",strlen(trail-str));
}
/*Thertrim()functionremovestrailingspacesfromastring.*/.
char*rtrim(char*str)
...{
intn=strlen(str)-1;/*StartatthecharacterBEFORE
thenullcharacter(0).*/
while(n>0)/*Makesurewedon'tgooutofhounds...*/
...{
if(*(str+n)1='')/*Ifwefindanonspacecharacter:*/
...{
*(str+n+1)='';/*Putthenullcharacteratone
characterpastourcurrent
position.*/
break;/*Breakoutoftheloop.*/
}
else/*Otherwise,keepmovingbackwardinthestring.*/.
n--;
}
returnstr;/**//*Returnapointertothestring*/
}
在上例中,rtrim()是用户编写的一个函数,它可以删去字符串尾部的空格。函数rtrim()从字符串中位于null字符前的那个字符开始往回检查每个字符,当遇到第一个不是空格的字符时,就将该字符后面的字符替换为null字符。因为在C语言中null字符是字符串的结束标志,所以函数rtrim()的作用实际上就是删去字符串尾部的所有空格。
6.3 怎样删去字符串头部的空格?
C语言没有提供可删去字符串头部空格的标准库函数,但是,编写这样的一个函数是很方便的。请看下例;
<script type="text/javascript">
new Ad(4, 'ad_cen');
</script>
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
<script type="text/javascript">
var fileName = '1389027';
var commentscount = 0;
var islock = false
</script><script type="text/javascript" src="http://static.blog.csdn.net/scripts/comment.js?v=1.8"></script>
<script type="text/javascript">
new Ad(5, 'ad_bot');
</script>
分享到:
相关推荐
纯C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全
探究 C 语言中的字符串 ...字符串在 C 语言中的存储和操作方式是非常重要的,需要了解字符串的存储方式、字符串和字符数组的区别、字符串相关处理函数的使用和字符指针的操作方式,以便更好地掌握 C 语言的编程技术。
c语言基础 c语言基础_c语言编程基础之字符串操作_查找常用字符串
C 语言字符串操作函数 1. 字符串反转 - strRev 2. 字符串复制 - strcpy 3. 字符串转化为整数 - atoi 4. 字符串求长 - strlen 5. 字符串连接 - strcat 6. 字符串比较 - strcmp 7. 计算字符串中的元音字符个...
3种删除字符串string中空格的方法 1、C风格 2、STL算法 3、ctype
这些是常用的字符串操作函数,有些和C中的同名函数意义完全一致. strrev是把一个字符串翻转. strtolower和strtoupper的意思应该不用解释了. ucfirst是把字符串的第一个字符变成大写. substr是返回字符串的一个...
C语言程序设计-用函数实现字符串的复制, 不允许用strcpy()函数.c
C语言字符串操作函数.doc
c语言字符串操作总结.pdf
字符处理:不使用 C 语言库函数自行编制函数实现字符串的复制、连接、转换为大写、小写、字符串比较功能 这里加载标准输入输出库只是为了输出测试结果函数本身不使用
CRT(C Runtime)函数是 C 语言标准库中的一组函数,用于执行常见的任务,例如字符串转数字。CRT 函数可以将字符串转换为整数、浮点数、长整数等多种数字类型。 1. atoi 函数 atoi 函数将字符串转换为整数,原型为...
c语言基础 c语言基础_c语言编程基础之字符串操作示例_数字转换成十六进制数
string,但是他们的缺点是不能完成汉字各种类型之间的转换,提供三种类库ascString,ucsString,utfString以及工具utfCount,utf8_ucs2_t,tcf8_ucs4_t类库,用于各种字符串之间的直接转换`操作`统计。简化中文软件的...
1 : 不匹配,参数值来自于语言环境的排序顺序字符串对象的值之前 -1 : 不匹配,参数值来自于语言环境的排序顺序字符串对象的值之后 例子: <html> <head> <title>JavaScript String ...
字符串使用;;;;;字符串的拼接:使用“+”号连接的方式,Python就会自动将若干个字符串合并成一个字符串。 实例:使用字符串的拼接符“+”号,把“不忘初心”和“牢记使命”拼接起来,并输出结果,想想还有其他便捷的...
字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 C# 中关于字符串的一些你可能遗忘或遗漏的知识点。 逐字字符串 在普通字符串中,反斜杠字符是转义字符。而在逐字字符串(Verbatim Strings)中,...
很方便的对比? 了解 一下 也许其他语言方便的实现的 他的函数包〉?] 既包括字符的 操作
给定一个字符串,将其中所有的小写字母转换成大写字母。 输入 输入一行,包含一个字符串(长度不超过100,可能包含空格)。 输出 输出转换后的字符串。 样例输入 helloworld123Ha 样例输出 HELLOWORLD123HA #...
进行字符串的拼接在这些高级脚本语言中是一件轻松的事情。 C语言是我的编程入门语言,但是我一直对这门语言了解并不是很深。确切说,我是对庞大的标准库以及GNU等函数库知之甚少。 使用C语言进行字符串的拼接应该...