char *strrev(char *s);
#include <string.h>
注意:strrev 同樣非 ANSI/ISO C 標準,屬於 Microsoft / Borland 擴展。標準 C 無直接對應函數,需自行實現。
將字符串 s 中的所有字符順序顛倒(不包括結束符 \0)。操作原地進行,直接修改傳入緩衝區。
返回指向反轉後字符串(即原緩衝區)的指針。
// strrev.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h> // for strdup
int main() {
char *s = "Welcome To Beijing";
// strdup 分配副本,避免修改常量區導致崩潰
char *dup = strdup(s);
printf("原始: %s\n", s);
printf("反轉: %s\n", strrev(dup)); // gnijiB oT emocleW
free(dup);
return 0;
}
strrev("abc") 必崩。必須傳入可修改的緩衝區(數組、malloc/strdup 分配的內存)。_wcsrev 或 ICU 庫。
#include <string.h>
void my_strrev(char *s) {
if (!s) return;
char *start = s;
char *end = s + strlen(s) - 1;
while (start < end) {
char tmp = *start;
*start++ = *end;
*end-- = tmp;
}
}
無直接標準對應。C++ 可用 std::reverse(s.begin(), s.end())。
strrev 是快速反轉字符串的非標準工具,使用時務必注意緩衝區可寫性與字符編碼兼容性。通用代碼請採用雙指針交換循環自行實現。