用C语言实现字符顺序互换,例如将字符串“567;123”转换为“123;567”
时间: 2023-08-26 16:03:31 浏览: 84
可以使用指针来对字符串进行操作,具体实现如下:
```c
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void reverse(char *str, int len) {
int i;
for (i = 0; i < len / 2; i++) {
swap(&str[i], &str[len - i - 1]);
}
}
void exchange(char *str) {
int len = strlen(str);
reverse(str, len); // 将整个字符串翻转
int start = 0, end = 0;
while (end <= len) {
if (str[end] == ';' || str[end] == '\0') {
// 遇到分号或者字符串结束符,将[start, end)翻转
reverse(&str[start], end - start);
start = end + 1;
}
end++;
}
}
int main() {
char str[] = "567;123";
exchange(str);
printf("%s\n", str); // 输出结果为"123;567"
return 0;
}
```
首先定义了一个 `swap` 函数,用于交换两个字符的位置,然后定义了一个 `reverse` 函数,用于将一个字符串翻转。在 `exchange` 函数中,先将整个字符串翻转,然后遍历字符串,当遇到分号或者字符串结束符时,将分号前面的部分翻转回来,直到整个字符串遍历完毕。最后在 `main` 函数中调用 `exchange` 函数,将结果输出即可。
阅读全文