用C语言在数组本地逆序一个字符串
时间: 2024-03-24 09:39:36 浏览: 16
可以使用双指针来实现。具体步骤如下:
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
#include <stdio.h>
#include <string.h>
int main() {
char str[100]; // 定义一个最大长度为100的字符数组
printf("请输入一个字符串:");
fgets(str, 100, stdin); // 从标准输入中读入一个字符串
int len = strlen(str); // 获取字符串的长度
printf("逆序输出字符串为:");
for (int i = len - 1; i >= 0; i--) { // 从字符串末尾开始遍历并输出
printf("%c", str[i]);
}
printf("\n");
return 0;
}
```
上述代码中,使用 `fgets()` 函数从标准输入中读入一个字符串,并存储在字符数组 `str` 中。然后使用 `strlen()` 函数获取字符串的长度,从字符串末尾开始遍历字符数组,并输出每个字符,最后换行。
用c语言写从键盘输入一个字符串,以回车键结束,逆序输出该字符串
以下是用C语言实现从键盘输入一个字符串,以回车键结束,逆序输出该字符串的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, len;
// 从键盘读入字符串
printf("请输入一个字符串:");
scanf("%s", str);
// 计算字符串长度
len = strlen(str);
// 逆序输出字符串
printf("逆序输出字符串:");
for (i = len - 1; i >= 0; i--) {
printf("%c", str[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,我们首先定义了一个字符数组 `str`,用于存储从键盘读入的字符串。然后通过 `scanf()` 函数从键盘读入字符串。接着使用 `strlen()` 函数计算字符串长度,并通过循环逆序输出字符串中的每个字符。最后别忘了添加换行符。