C语言如何实现翻转字符串中的单词_第1页
C语言如何实现翻转字符串中的单词_第2页
C语言如何实现翻转字符串中的单词_第3页
C语言如何实现翻转字符串中的单词_第4页
C语言如何实现翻转字符串中的单词_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C语言如何实现翻转字符串中的单词目录C语言翻转字符串中的单词另外开辟一个空间,来存放翻转的字符串直接在原数组上进行操作C语言字符串各单词的反转思路代码实现代码编译调试输出

C语言翻转字符串中的单词

另外开辟一个空间,来存放翻转的字符串

单词之间是以空格间隔的,所以我们翻转需要一个一个字符进行翻转,我们需要找寻空格,找到空格表示一个字符已经找到,进行以下的步骤:

1.首先获取原字符串的长度,申请一个长度+1的空间,因为还需要一个结束符。

2.定义一个变量i,初始化为0,用i进行字符串的遍历,定义一个start用来表示每个单词的起始位置。

3.遍历字符串,不是空格i++,直到遇见空格,表示找到了一个单词。

4.将该单词从末尾放到咱们新开辟的数组中,就实现了逆序。

5.空格也需要放到临时数组中保持与原数组一致。

#includestdio.h

#includestring.h

char*reverseWords(char*s);

intmain(){

chars[]="Let'spasstheexamination";

char*temp=reverseWords(s);

printf("%s",temp);

return0;

char*reverseWords(char*s){

//获取该字符串长度

intlength=strlen(s);

//申请新的空间

char*temp=(char*)malloc(sizeof(char)*(length+1));

//结束符\0

temp[length]=0;

inti=0;

while(ilength){

//单词的起始位置

intstart=i;

//找寻单词,因为字符串中的单词以空格间隔

while(ilengths[i]!=''){

i++;

}

//找到了一个单词进行交换,将后边的字符放到前边

for(intj=start;jj++){

//将单词从后往前放置到新的数组中实现单词的逆序

temp[j]=s[start+i-1-j];

}

//处理空格

while(ilengths[i]==''){

temp[i]='';

i++;

}

}

returntemp;

}

直接在原数组上进行操作

使用双指针进行单词的翻转,一个指向单词的开始,一个指向单词的末尾。与上述方方法几乎一致,只是交换的时候发生了一些变化。

1.先通过空格找寻单词。

2.然后通过双指针实现单词翻转。

3.继续遍历字符串,空格跳过。

4.完成整个字符串的翻转。

#includestdio.h

#includestdlib.h

#includestring.h

char*reverseWords(char*s);

intmain(){

chars[]="Let'spasstheexamination";

char*temp=reverseWords(s);

printf("%s",temp);

return0;

char*reverseWords(char*s){

//获取该字符串长度

intlength=strlen(s);

inti=0;

while(ilength){

//单词的起始位置

intstart=i;

//找寻单词,因为字符串中的单词以空格间隔

while(ilengths[i]!=''){

i++;

}

//双指针

intleft=start;

intright=i-1;

//双指针法进行翻转

while(leftright){

chartemStr=s[left];

s[left]=s[right];

s[right]=temStr;

left++;

right--;

}

//空格忽略

while(ilengths[i]==''){

i++;

}

}

returns;

}

C语言字符串各单词的反转

思路

我们首先把字符串整个反转,然后在逐个单词反转回来,每个单词通过空格分隔开

代码实现

intstrReverse(char*head,char*tail){

if(NULL==head||NULL==tail){

printf("strReverseparamerror!\n");

returnPARAM_ERR;

chartmp;

while(headtail){

tmp=*head;

*head=*tail;

*tail=tmp;

head++;

tail--;

returnSUCCESS;

intstrReversWithoutWord(char*str){

if(NULL==str){

printf("strReverseparamerror!\n");

returnPARAM_ERR;

intlen=0;

char*head=NULL,*tail=NULL;

char*p=NULL,*q=NULL;

/*1.整个字符串颠倒*/

len=strlen(str);

head=str;

tail=str+len-1;

strReverse(head,tail);

/*逐个单词颠倒回来*/

p=str;

while(*p!='\0'){

head=p;

q=p;

while(''!=*q'\0'!=*q){

q++;

tail=q-1;

strReverse(head,tail);

p=q+1;

voidtestReverse(void){

charstr[100]="FengisfromBeijing!";

char*head=NULL,*tail=NULL;

intlen=0;

printf("\n************testReverse************\n");

strReversWithoutWord(str);

printf("Reversestringwithoutwordis:%s\n\n",str);

return;

}

代码编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论