c語言顛倒字元串
Ⅰ c語言 把字元串前後倒置
我的演算法是原地轉置。原地轉置有個問題,就是不能對靜態存儲的字元串操作。比如char
*s="abc";reverse(s);就會出錯。樓上的幾位的演算法不是原地轉置,可以對靜態字元串操作。
void
reverse(char
*s)
{
char
*p=s;
while(*p!='\0')
p++;
p--;
char
*q=s;
char
temp;
while(p>q)
{
temp=*p;
*p=*q;
*q=temp;
}
}
Ⅱ 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;
}
Ⅲ c語言 將一個輸入的字元串的內容顛倒後輸出
可以直接使用庫函數strrev(), 需要包含頭文件string.h
#include<stdio.h>
#include<string.h>
intmain()
{
charbuf[1024];
scanf("%s",buf);
strrev(buf);
printf("%s ",buf);
return0;
}
strrev不是C語言的函數,自己用指針來實現也非常簡單。
char *_strrev(char *str)
{
char *f = str, *l = str + strlen(str), ch;
while(f<l) {ch = *f; *f++ = *(--l); *l = ch;}
return str;
}
wchar_t *_wcsrev(wchar_t *wcs)
{
wchar_t *f = wcs, *l = wcs + wcslen(wcs), ch;
while(f<l) {ch = *f; *f++ = *(--l); *l = ch;}
return wcs;
}
對於多字元的漢字的調換次序,要想得到正確的結果,必須先將多字元轉換為寬字元,調換次序後再轉化為多字元。