本章集中讨论字符串操作,包括拷贝字符串,拷贝字符串的一部分,比较字符串,字符串右对齐,删去字符串前后的空格,转换字符串,等等。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语言字符串练习(习题+答案).zip》"正是针对这一需求而准备的,它包含了C语言字符串操作的专项练习题和对应的答案,帮助学习者巩固和提升在字符串处理方面的技能。 字符串在C语言中扮演着重要角色,它们...
纯C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
根据给定的信息,本文将详细解释两个用于C语言中字符串截取的方法:`subStringByIndex` 和 `subStringByPointer`。这两个函数都属于自定义实现,它们提供了灵活且实用的功能来...这对于处理复杂的字符串操作非常有用。
标题《C语言字符、字符串定义及相关函数》所涉及的知识点主要集中在C语言中字符与字符串的表示方法、存储机制以及常用的字符串操作函数。C语言是高级编程语言中较为底层的一门语言,它没有专门的字符串类型,而是...
### C语言中字符串的处理方式 ...C语言中的字符串处理虽然不如现代编程语言那样直观,但是通过上述介绍的方法和技巧,可以有效地管理和操作字符串。了解这些基础知识对于任何C语言开发者来说都是非常重要的。
### 汇编语言实验:字符串位置的查找 本文将基于提供的汇编代码,解析如何在汇编语言中...通过对这段代码的理解,可以帮助我们更好地掌握汇编语言的基础语法和控制结构,尤其是如何利用寄存器和内存来实现字符串操作。
Objective-C是一种用于开发iOS应用的主要编程语言,其字符串操作主要依赖于NSString类和NSMutableString类。NSString用于创建不可变字符串对象,而NSMutableString则用于创建可变字符串对象。以下是Objective-C中...
本程序旨在通过指针实现字符串的逆序和调序输出,这两个概念是字符串操作中的常见技巧。 逆序输出字符串是指将字符串中的字符顺序反转,例如原字符串"hello"逆序后变为"olleh"。在C语言中,我们可以用指针来达到这...
标题 "C语言实现的 json格式字符串与结构体自动相互转化" 涉及到的核心知识点是C语言编程、JSON解析和结构体操作。C语言是一种底层编程语言,通常用于系统编程、嵌入式开发等领域,而JSON(JavaScript Object ...
因此,我将基于标题和描述中提供的信息,即“C 语言字符串操作大全”,来构建相关知识点。 C语言是较为古老也是十分基础的编程语言之一,它在计算机编程领域的教学和应用中占据着重要地位。字符串操作是C语言中一个...
本文将深入探讨C语言中的字符串翻转算法,这是一个经典的编程问题,通过解决这个问题,我们可以更好地理解C语言的指针操作。 首先,我们要知道在C语言中,字符串是由字符数组表示的,通常以空字符'\0'作为结束标志...
C语言本身并不包含内置的高效字符串库,但通过标准库中的`<string.h>`,我们可以访问一些基本的字符串操作函数。本资料包提供了高速字符串处理功能的C语言源程序,旨在帮助开发者优化其在字符串操作上的性能,同时...
在C语言中,我们通常使用标准库函数如`strcpy`来拷贝字符串。然而,在某些特定情况下,如优化性能或理解底层操作,我们可能需要直接调用汇编语言程序来实现这一功能。在这个主题中,我们将探讨如何在C语言函数中嵌入...
C语言本身并不像其他高级语言那样内置了丰富的字符串操作函数,但通过标准库中的`<string.h>`我们可以使用一些基本的字符串函数,如`strcpy`、`strlen`等。然而,为了更好地理解和掌握C语言,有时我们需要自己动手...
字符串处理是编程语言中最基本也是最重要的操作之一。在这里,我们使用了gets函数来读取用户输入的字符串,并使用strlen函数来获取字符串的长度。 知识点2:字符判断 在字符串处理中,我们需要判断字符串中的每个...
其中,字符串处理是C语言编程中一个重要的知识点,尤其是字符串的连接操作,更是日常编程中频繁用到的技术之一。根据给定的文件信息,我们将深入探讨C语言中连接字符串的实现方法及相关知识。 ### C语言中的字符串 ...
在C语言中,字符串操作是编程实践中不可或缺的一部分。C语言本身并不直接支持字符串类型,而是通过字符数组来处理字符串。本教程将深入探讨C语言中的字符串处理,包括基本概念、常用函数以及查找常用字符串的方法。 ...
传统的字符数组(如C语言中的char数组)在处理字符串时,通常受到固定长度的限制。而链式字符串则通过动态创建节点来存储每个字符,这样可以灵活地处理任意长度的字符串,避免了数组长度预设的局限性。 首先,我们...
在字符串操作中,字符串拷贝是最基本的一种操作。C 语言提供了多种字符串拷贝函数,例如 strdup、strcpy、strncpy 等。 strdup 函数 strdup 函数是字符串拷贝函数之一,它可以将源字符串拷贝到目的字符串中。该...
在Windows环境下,使用C语言进行文本字符串的一键替换是一个常见的编程任务,这涉及到文件操作、字符串处理以及查找和替换算法。下面将详细讲解这个过程,包括相关知识点。 首先,我们需要理解C语言的基本语法和...