C语言入门教程-字符串
[09-12 13:07:55] 来源:http://www.88dzw.com 电路基础 阅读:8255次
文章摘要:对于strcpy函数,我们可以如法炮制: strcpy(char s1[],char s2[]){int x;for (x=0; x<=strlen(s2); x++)s1[x]=s2[x];}注意,在for循环中使用<=是很关键的,这样一来复制过程就包含上'0'。一定要复制'0'。否则程序到后面将发生严重的错误,因为字符串失去了结束标志就无法确定其长度。还请注意这段代码的效率很低,这是因为for循环每次都要调用strlen函数。为解决此问题,您可以使用下面的代码: strcpy(char s1[],char s2[]){
C语言入门教程-字符串,标签:电子电路基础,模拟电路基础,http://www.88dzw.com对于strcpy函数,我们可以如法炮制:
strcpy(char s1[],char s2[])
{int x;for (x=0; x<=strlen(s2); x++)
s1[x]=s2[x];}
注意,在for循环中使用<=是很关键的,这样一来复制过程就包含上'0'。一定要复制'0'。否则程序到后面将发生严重的错误,因为字符串失去了结束标志就无法确定其长度。还请注意这段代码的效率很低,这是因为for循环每次都要调用strlen函数。为解决此问题,您可以使用下面的代码:
strcpy(char s1[],char s2[])
{int x,len;len=strlen(s2);for (x=0; x<=len; x++)
s1[x]=s2[x];}
类似地可以写出指针版本。
strcpy(char *s1,char *s2)
{while (*s2 != '0')
{*s1 = *s2;s1++;
s2++;}}
并进一步化简为:
strcpy(char *s1,char *s2)
{while (*s2)
*s1++ = *s2++;}
只要您愿意,甚至可以写成while (*s1++ = *s2++);。用strcpy将一个长度为120的字符串复制10,000遍,四个版本分别耗时415秒、14.5秒、9.8秒和10.3秒。如您所见,在这里指针明显提升了程序的性能。
从字符串库中strcpy的函数原型可以看出,它被设计为返回一个指向字符串的指针:
char *strcpy(char *s1,char *s2)
多数字符串函数都会返回一个字符串指针作为结果。strcpy返回的是s1的值。
使用指针操作字符串有时会带来明显的速度提升。编写程序前要想一想如何利用指针的这种优势。例如,您要删除某字符串开始处的空格。您可能会将后面的字符前移来覆盖掉前面的空格。其实,您连一个字符也不用移动:
#include
#include
int main()
{char s[100],*p;gets(s);p=s;
while (*p==' ')
p++;printf("%sn",p);return 0;}
这种方法比移动字符要快得多,对于长字符串更是如此。
随着继续学习和阅读更多代码,您会掌握越来越多的字符串操作技巧。勤加练习是关键。
- 上一篇:C语言入门教程-字符串须知
《C语言入门教程-字符串》相关文章
- › C语言入门教程-二进制文件
- › C语言入门教程-打开文本文件
- › C语言入门教程-读取文本文件
- › C语言入门教程-指针
- › C语言入门教程-为什么要用指针?
- › C语言入门教程-指针基础
- 在百度中搜索相关文章:C语言入门教程-字符串
- 在谷歌中搜索相关文章:C语言入门教程-字符串
- 在soso中搜索相关文章:C语言入门教程-字符串
- 在搜狗中搜索相关文章:C语言入门教程-字符串
编辑推荐
- · 什么是系统仿真
- · 什么是CPCI
- · 英特尔 Parallel Composer入门
- · 什么是支持数据库,什么是中宏数据库
- · 什么是数据交换技术
- · 什么是内部数据传输率
- · 什么是空间数据交换中心
- · 什么是差异备份
- · 什么是备份集
- · 什么是映像备份
- · IGBT模块
- · 什么是24脉波整流变压器
- · 自动变速器不能强制降挡故障原因、诊断与排
- · 什么是MD机
- · 中心频率,什么是中心频率
- · 功率单位mw和dbm的换算表
- · 中值滤波模块设计思路
- · 反馈振荡器的原理
- · 气体激光器简介
- · 数制与进位记数法