用C语言在数组本地逆序一个字符串
时间: 2024-03-24 19:39:36 浏览: 73
可以使用双指针来实现。具体步骤如下:
1. 定义两个指针,一个指向字符串的开头,另一个指向结尾。
2. 不断交换两个指针所指的字符,并将指针向中间移动,直到两个指针相遇。
3. 交换完成后,整个字符串就被本地逆序了。
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char* str) {
int len = strlen(str);
char *p1 = str, *p2 = str + len - 1;
while (p1 < p2) {
char tmp = *p1;
*p1 = *p2;
*p2 = tmp;
p1++;
p2--;
}
}
int main() {
char str[] = "hello world";
reverse_string(str);
printf("%s\n", str); // 输出: "dlrow olleh"
return 0;
}
```
注意,本地逆序只是将字符串在数组中的顺序颠倒过来,并不改变字符串在内存中的地址。因此,该函数不需要返回值。
相关问题
c语言数组字符串逆序输出
在C语言中,要逆序输出数组中的字符串,你可以先将整个字符串复制到另一个字符数组中,然后从后向前遍历这个新数组逐个输出字符。以下是简单的步骤:
1. 定义一个临时字符数组用于存储原字符串的倒序。
2. 获取原字符串的长度,通常使用`strlen()`函数。
3. 将原字符串从后往前复制到临时数组,可以借助两个指针,一个指向原数组的末尾,一个指向临时数组的开始,每次循环交换它们所指向的字符,直到相遇为止。
4. 最后遍历并打印临时数组,就得到了原字符串的逆序。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char str[], char temp[]) {
int len = strlen(str);
int i = 0, j = len - 1;
while (i < j) {
temp[i] = str[j];
temp[j] = str[i]; // 或者可以用 temp[i++] = str[--j] 双指针交换
i++;
j--;
}
}
int main() {
char str[] = "Hello, World!";
char temp[strlen(str) + 1]; // 加1是为了防止数组越界
// 复制原字符串到temp
strcpy(temp, str);
// 逆序字符串
reverse_string(temp, temp);
printf("Reversed string: %s\n", temp); // 输出逆序后的字符串
return 0;
}
```
如何用C语言实现数组或字符串元素的逆序排列?
在C语言中,我们可以使用两个指针,一个指向数组或字符串的开头,另一个指向结尾,然后交换它们指向的元素,逐个向中间移动,直到两个指针相遇。以下是两种常见的方法:
**1. 数组逆序排列示例:**
```c
void reverse_array(int arr[], int start, int end) {
while (start < end) {
// 交换arr[start]和arr[end]
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
}
// 使用示例
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
reverse_array(arr, 0, n - 1);
// 输出逆序后的数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
**2. 字符串逆序排列示例(C语言本身没有内置的字符串类型,这里假设我们有一个字符数组表示字符串):**
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char str[]) {
int len = strlen(str) - 1;
while (len > 0) {
char temp = str[len];
str[len] = str[0];
str[0] = temp;
len--;
}
}
int main() {
char str[] = "Hello, World!";
reverse_string(str);
// 输出逆序后的字符串
printf("%s\n", str);
return 0;
}
```
阅读全文