字元串反轉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;
}