字符串反转c语言
① c语言中如何实现字符串的反转
#include<stdio.h>
#include<string.h>
string_change(char*p)
{
inti,len;
chartemp;
len=strlen(p);
//printf("%d ",len);
//testprintf("%d ",len);
for(i=0;i<(len/2);i++)
{
temp=p[i];
p[i]=p[len-1-i];
p[len-1-i]=temp;
}
}
intmain(void)
{
chara[20]="1234567890";
printf("%s ",a);
string_change(a);
printf("%s ",a);
return0;
}
两个明显的误解:
char* a="12***"; 这样定义是错误的。这样 a指向字符串常量的指针。而字符串常量是不能改变的。所以停止运行。
c中数组是从0开始编号的。所以字符串最后一个字符是a[len-1];
② c语言的问题字符串反转
因为你在dest++时,改变了dest的指向的位置,所以没有输出正确的结果。
按照你的程序给你修改了一下,请参考。
1 #include <stdio.h>
2 #include <string.h>
#include <malloc.h> // 注意这里:增加使用malloc的头文件,消除warning
3 main()
4 {
5 char *a = "abc";
6 char *rever(char *dest,const char *src);
7 char *b = (void *)malloc(strlen(a)+1);
memset(b, 0x00, sizeof(strlen(a)+1)); // 注意这里:对malloc的buf进行初始化
8 printf("%s\n", rever(b,a));
9 }
10 char *rever(char *dest,const char *src)
11 {
12 int n;
char *temp = dest; // 注意这里:用来记录dest的初始地址
13 for (n = strlen(src)-1;n>=0;dest++,n--)
14 *dest = *(src+n);
15 return temp; // 注意这里:返回dest字符串的首地址
16 }
程序给你测试通过。
③ C语言字符串反转
for(i=0;i<len/2;i++)//<----------------------
{
ch=str[i];
str[i]=str[len-i-1];
str[i]=ch;
}
④ c语言如何实现字符串按位翻转
字符串按位翻转可以通过对每个字符按位翻转实现,首先通过指针偏移或数组下标依次取出字符,然后对单个字符做按位非操作,即~
⑤ C语言 字符串反转代码看不懂! 帮助详细解释,谢谢!!
*p2
=
str-1
while(*++p2);
这两句是为了让指针p2移动到字符结尾,即null字符。其中*p2
=
str-1
是为了配合后一句中while(*++p2)的。因为*++p2是先自增加1。这样当开始执行while(*++p2)是++p2正好指向字符串的第一个字符。
p2
-=1;
这句的意思是,while(*++p2)结束后,p2只需了字符串结尾的null字节,执行p2
-=1后,p2指向了字符串最后一个有效字符(null前面一个字符);
while(p1
评论
0
0
0
加载更多
⑥ c语言中,字符反转,怎么做(还没学指针)
你记录两个值:
1、单个字符串的开始和结束
2、比如例子中的I Love You,第一个字符串I开始和结束都是0,就不用换
3、然后到了空格(非字母也一样)也不用管继续往下走
4、到Love就是开始是2,结束时5,就把这个值传给一个交换函数
5、在交换函数中,把2-5 3-4转换,然后继续往下走....
6、这样循环到尾就好了。
⑦ C语言字符串逆转函数
只需要将字符数组的前后数据进行交换就行了。
#include<stdio.h>
#include<string.h>
char*reverse(char*x)
{
inti,tem,len=strlen(x);
intn=len/2;
for(i=0;i<=n;i++)//前后交换数据
{
tem=x[i];
x[i]=x[len-1-i];
x[len-1-i]=tem;
}
returnx;
}
intmain()
{
charp[]="abcdefghijk";
printf("relust=%s ",reverse(p));
return0;
}
⑧ c语言如何实现字符串的反转
#include<stdio.h>
void reverse(char s[])
{ int i,j;
char c;
for(i=0; s[i]; i++);
for(i--,j=0; j<i;)
{ c=s[j];
s[j++]=s[i];
s[i--]=c;
}
}
int main()
{ char s[200];
gets(s);
reverse(s);
puts(s);
return 0;
}
⑨ 输入多行字符串,把这些字符串逆序且反转输出(C语言)
1、先用字符串数组读取多行字符串,再挨着逆序反转输出即可。
2、例程:
voidmain(void){
charstr1[10];
inti,ln;//增加一个ln计长度吧
charstr2[10]="";//这里改了
charc[10];
gets(str1);
ln=strlen(str1);//增加一句测出你输入的长度
for(i=0;i<ln;i++){//用实际输入的长度控制
c[i]=str1[i];
str2[ln-1-i]=c[i];//用实际输入的长度控制
}
puts(str2);
printf(" ");
}
⑩ C语言反转字符串怎么反转
读取字符串,浏览字符串每一个字符,
如果是空格就输出空格,
否则就保存当前位置,从当前位置移动到下一个空格或字符尾前,
从当前位置开始反向输出,直达回到保存的位置
最后输出回车,结束
//以下是C语言版的,需要的话,可以看看
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define String_MaxSize 10000 //读入字符串的最大长度
int main()
{
char stringPtr[String_MaxSize]; //保存读入的字符串
//循环读取直到文件尾
while(gets(stringPtr))
{
int stringPtr_length = strlen(stringPtr); //字符串的长度
int i;
//循环读取整段字符串
for(i = 0; i < stringPtr_length; i++)
{
//如果字符为空格
if(stringPtr[i] == ' ')
{
//直接输出空格
printf(" ");
}
//如果字符非空格
else
{
int tempPos = i; //保存当前i的位置
int j; //代替i进行反向移动
//读取到下一个空格或字符串尾的前一个位置
while(i < stringPtr_length && stringPtr[i] != ' ')
{
i++;
}
i--;
//输出单词
for(j = i; j >= tempPos; j--)
{
putchar(stringPtr[j]);
}
}
}
//输出回车
printf("\n");
}
//输出回车
printf("\n");
return 0;
}