`
nathan09
  • 浏览: 146602 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

c 语言中的字符串操作

 
阅读更多

本章集中讨论字符串操作,包括拷贝字符串,拷贝字符串的一部分,比较字符串,字符串右对齐,删去字符串前后的空格,转换字符串,等等。C语言提供了许多用来处理字符串的标准库函数,本章将介绍其中的一部分函数。

在编写C程序时,经常要用到处理字符串的技巧,本章提供的例子将帮助你快速学会一些常用函数的使用方法,其中的许多例子还能有效地帮助你节省编写程序的时间。

61 串拷贝(strcpy)和内存拷贝(memcpy)有什么不同?它们适合于在哪种情况下使用?

strcpy()函数只能拷贝字符串。strcpy()函数将源字符串的每个字节拷贝到目录字符串中,当遇到字符串末尾的null字符(/0)时,它会删去该字符,并结束拷贝。

memcpy()函数可以拷贝任意类型的数据。因为并不是所有的数据都以null字符结束,所以你要为memcpy()函数指定要拷贝的字节数。

在拷贝字符串时,通常都使用strcpy()函数;在拷贝其它数据(例如结构)时,通常都使用memcpy()函数。

以下是一个使用strcpy()函数和memcpy()函数的例子:

#include<stdio.h>

#include
<string.h>

typedef
structcust-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()

functionreturnsapointertothedestination
string.*/

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,just
aswithstrcpy(),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

the
nullcharacter(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语言没有提供可删去字符串头部空格的标准库函数,但是,编写这样的一个函数是很方便的。请看下例;

#include<stdio.h>

#include
<string.h>



voidmain(void);

char*ltrim(char*);

char*rtrim(char*);

voidmain(void)

...{

char*lead_str="Thisstringhasleadingspacesinit.";,

/*ShowthestatusofthestringbeforecallingtheItrim()

function.
*/

printf(
"BeforecallingItrim(),lead-stris'%s' ",lead_str);

printf(
"andhasalengthof%d. ",strlen(lead_str));

/*CalltheItrim()functiontoremovetheleadingblanks.*/.

Itrim(lead_str);

/*Showthestatusofthestring

aftercallingtheItrim()function.
*/

prinft(
"AftercallingItrim(),lead_stris'%s' ",lead_str);

print(
"andhasalengthof%d. '',strlen(lead-str));

}


/*TheItrim()functionremovesleadingspacesfromastring.*/



char*ltrim(char*str)

...{

strrev(str);
/*CallstrrevOtoreversethestring.*/

rtrim(str)).
/**//*CallrtrimOtoremvoethe"trailing"spaces.
*/

strrev(str);/*Restorethestring'soriginalorder.*/

returnstr;/*Returnapointertothestring.*/.

}

/*Thertrim()functionremovestrailingspacesfromastring.*/



char*rtrim(char*str)

{

intn=strlen(str)-l;/*StartatthecharacterBEFORE

thenullcharacter(
<!--192.168.1.236-->
<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语言字符串拆分成字符串数组.c

    纯C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。

    C 语言字符串操作大全

    C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全

    探究C语言中的字符串.pdf

    探究 C 语言中的字符串 ...字符串在 C 语言中的存储和操作方式是非常重要的,需要了解字符串的存储方式、字符串和字符数组的区别、字符串相关处理函数的使用和字符指针的操作方式,以便更好地掌握 C 语言的编程技术。

    c语言基础-c语言编程基础之字符串操作-查找常用字符串.zip

    c语言基础 c语言基础_c语言编程基础之字符串操作_查找常用字符串

    C语言字符串操作函数

    C 语言字符串操作函数 1. 字符串反转 - strRev 2. 字符串复制 - strcpy 3. 字符串转化为整数 - atoi 4. 字符串求长 - strlen 5. 字符串连接 - strcat 6. 字符串比较 - strcmp 7. 计算字符串中的元音字符个...

    删除字符串中空格的3种方法

    3种删除字符串string中空格的方法 1、C风格 2、STL算法 3、ctype

    如何使用PHP中的字符串函数

    这些是常用的字符串操作函数,有些和C中的同名函数意义完全一致. strrev是把一个字符串翻转. strtolower和strtoupper的意思应该不用解释了. ucfirst是把字符串的第一个字符变成大写. substr是返回字符串的一个...

    C语言程序设计-用函数实现字符串的复制, 不允许用strcpy()函数.c

    C语言程序设计-用函数实现字符串的复制, 不允许用strcpy()函数.c

    C语言字符串操作函数.doc

    C语言字符串操作函数.doc

    c语言字符串操作总结.pdf

    c语言字符串操作总结.pdf

    字符串基本操作-复制,连接,比较等

    字符处理:不使用 C 语言库函数自行编制函数实现字符串的复制、连接、转换为大写、小写、字符串比较功能 这里加载标准输入输出库只是为了输出测试结果函数本身不使用

    字符串转数字

    CRT(C Runtime)函数是 C 语言标准库中的一组函数,用于执行常见的任务,例如字符串转数字。CRT 函数可以将字符串转换为整数、浮点数、长整数等多种数字类型。 1. atoi 函数 atoi 函数将字符串转换为整数,原型为...

    c语言基础-c语言编程基础之字符串操作示例-数字转换成十六进制数.zip

    c语言基础 c语言基础_c语言编程基础之字符串操作示例_数字转换成十六进制数

    C++ 汉字UTF-8字符串处理类库

    string,但是他们的缺点是不能完成汉字各种类型之间的转换,提供三种类库ascString,ucsString,utfString以及工具utfCount,utf8_ucs2_t,tcf8_ucs4_t类库,用于各种字符串之间的直接转换`操作`统计。简化中文软件的...

    JavaScript中操作字符串之localeCompare()方法的使用

    1 : 不匹配,参数值来自于语言环境的排序顺序字符串对象的值之前 -1 : 不匹配,参数值来自于语言环境的排序顺序字符串对象的值之后 例子: &lt;html&gt; &lt;head&gt; &lt;title&gt;JavaScript String ...

    Python语言基础:字符串使用.pptx

    字符串使用;;;;;字符串的拼接:使用“+”号连接的方式,Python就会自动将若干个字符串合并成一个字符串。 实例:使用字符串的拼接符“+”号,把“不忘初心”和“牢记使命”拼接起来,并输出结果,想想还有其他便捷的...

    c# 字符串操作总结

    字符串操作在任意编程语言的日常编程中都随处可见,今天来汇总一下 C# 中关于字符串的一些你可能遗忘或遗漏的知识点。 逐字字符串 在普通字符串中,反斜杠字符是转义字符。而在逐字字符串(Verbatim Strings)中,...

    c语言\各字符串函数

    很方便的对比? 了解 一下 也许其他语言方便的实现的 他的函数包〉?] 既包括字符的 操作

    c语言将字符串中的小写字母转换成大写字母

    给定一个字符串,将其中所有的小写字母转换成大写字母。 输入 输入一行,包含一个字符串(长度不超过100,可能包含空格)。 输出 输出转换后的字符串。 样例输入 helloworld123Ha 样例输出 HELLOWORLD123HA #...

    C语言实现合并字符串

    进行字符串的拼接在这些高级脚本语言中是一件轻松的事情。 C语言是我的编程入门语言,但是我一直对这门语言了解并不是很深。确切说,我是对庞大的标准库以及GNU等函数库知之甚少。 使用C语言进行字符串的拼接应该...

Global site tag (gtag.js) - Google Analytics