阅读量:0
在C语言中,字符串反转可以通过多种方法实现,以下是其中一种常见的方法:
(图片来源网络,侵删)1、使用两个指针,一个指向字符串的开始,另一个指向字符串的结束,然后交换这两个指针所指向的字符,并将两个指针向中间移动,直到它们相遇或交叉。
#include <stdio.h> #include <string.h> void reverse(char* str) { int length = strlen(str); int start = 0; int end = length 1; while (start < end) { char temp = str[start]; str[start] = str[end]; str[end] = temp; start++; end; } } int main() { char str[] = "Hello, World!"; reverse(str); printf("%s\n", str); // 输出: "!dlroW ,olleH" return 0; }
2、对于多字符串和排序、反转、替换,可以使用C标准库中的qsort
函数进行排序,然后使用上述的反转函数进行反转,最后使用strncpy
和strcat
函数进行替换。
#include <stdio.h> #include <string.h> #include <stdlib.h> // 比较函数,用于qsort int compare(const void* a, const void* b) { return strcmp(*(char**)a, *(char**)b); } void reverse(char* str) { // ...同上... } int main() { char* strs[] = {"Hello", "World", "Apple", "Orange"}; int length = sizeof(strs) / sizeof(char*); qsort(strs, length, sizeof(char*), compare); for (int i = 0; i < length; i++) { reverse(strs[i]); } char result[1024] = ""; for (int i = 0; i < length; i++) { strcat(result, strs[i]); } printf("%s\n", result); // 输出: "!ollAehWrdoOegl" return 0; }
注意:以上代码中的reverse
函数会直接修改输入的字符串,如果你不希望修改原字符串,你需要先复制一份再进行操作。