C语言问题:字符串(单词)反转,例如:I am boy,反转为 I ma yob 简单实用,指针操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言问题:字符串(单词)反转,例如:I am boy,反转为 I ma yob 简单实用,指针操作相关的知识,希望对你有一定的参考价值。
void fun(char* str)
char a[100];
int i=0,m=0;
str=a;
m=strlen(str)-1;
gets(str);
for(i=m;i>=0;i--)
printf("%c",a[i]);
谁帮忙给改一下
int isSlipChar(char c) //非单词字符返回1
static char slipchar[]=" \\t\\n,;.<>\\\\/?:\'\\"|~`!@#$%^&*()-+[]";//自定义所有的可出现又不做单词的字符
char *p=slipchar;
while(*p)if(*p++==c)return 1;
return 0;
char* strReverse(char*s)//反转单词
if(!s||!*s) return s;
char *p1,*p2,*p3;
p3=s;
while(*p3) //Agan://昨天的写法,接受网友的建议,改为模块化代码
while(isSlipChar(*p3)) p3++;//跳过不是单词的内容
p1=p2=p3;
while(*p2&&!isSlipChar(*p2)) p2++;
p3 = p2--;
while(p1<p2) char c=*p1;*p1=*p2;*p2=c;p1++;p2--;
//if(*p3) goto Agan;//goto循环改为while循环了
return s;
//测试用例:
void main()
char buf[250];
printf("输入一个串:\\n");gets(buf);
printf("反转后:\\n%s",strReverse(buf));
//测试结果:
D:\\Hwm\\VC7\\test1\\Debug>test1.exe
输入一个串:
I am boy, you are a girl;
反转后:
I ma yob, uoy era a lrig;
D:\\Hwm\\VC7\\test1\\Debug> 参考技术A #include<stdio.h>
#include<stdlib.h>
#include<string.h>
void search(char *);
void main()
char a[30],*p,*k; //p为指向单词首字母的指针
int n; //字符串长度
p=a;
printf("输入字符串:\n");
gets(p);
n=strlen(a);
k=a+n; //k为指向字符串尾字母的指针
*k=' ';
*(k+1)='\0';
printf("原字符串为:\n");
printf("%s\n",a);
if(*p!='\0')
printf("转换后为:\n");
search(p);
system("pause");
void search(char *p)
char *g,*t;
for(g=p;;g++)
if(!(((*g<='z')&&(*g>='a'))||((*g<='Z')&&(*g>='A'))))
for(t=g-1;t>=p;t--)
printf("%c",*t);
printf("%c",*g);
p=g+1;
if(*p=='\0') break;
参考技术B void fun(char *str)
char *p1,*p2,*t; //p1指向单词的起始地址p2指向结尾地址。
p1=str;//字符串的起始地址赋给p1,即第一个单词的起始地址
while(++str)//判断字符串到最后
if(*str==" ")//如果为空格则前一个地址指向的是单词的末尾
p2=str;
p2--;//指向单词的末尾
while(p1++<p2--)//将单词交换
t=p1;
p1=p2;
p2=t;
p1=str++;//由str得到下一个单词的起始地址,当while(++str)循环退出的时候就的得到了p2的末尾
p2=str--;//最后一个单词的后面,不为空格特殊考虑,
while(p1++<p2--)
t=p1;
p1=p2;
p2=t;
这是我在网吧写的,没有验证过,供参考。 参考技术C 做一个循环,一个指针指向单词首,一个指针指向空格或者字符,然后申请一个字符变量做交换就可以了
以上是关于C语言问题:字符串(单词)反转,例如:I am boy,反转为 I ma yob 简单实用,指针操作的主要内容,如果未能解决你的问题,请参考以下文章
C语言,有道题目,将 "I am a boy"这句话中的单词按由短到长的顺序排列,用指针来做这题~~~希望大虾帮助一下~