请编写一个 C 函数,该函数将一个字符串逆序
时间: 2023-05-14 17:07:24 浏览: 150
答案:
以下是一个简单的 C 函数,可以将一个字符串逆序:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char* str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str[] = "Hello, world!";
printf("Original string: %s\n", str);
reverse_string(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
输出:
```
Original string: Hello, world!
Reversed string: !dlrow ,olleH
```
希望这个函数能够帮助你。
相关问题
请编写一个 C 函数,该函数将一个字符串逆序,至少运用两种方法
答案:
方法一:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str[] = "hello world";
printf("Original string: %s\n", str);
reverse_string(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
方法二:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char *str) {
char *start = str;
char *end = str + strlen(str) - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "hello world";
printf("Original string: %s\n", str);
reverse_string(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
注意:以上代码中的两种方法都是将字符串原地逆序,即不使用额外的空间。
用C语言编写一个函数,完成将一个字符串中的字符逆序输出,即最后一个先输出,第1个最后输出,并编写主函数进行测试。 (1)编写逆序函数,返回逆序的字符串。 (2)编写主函数,进行字符串的输入,调用逆序函数,完成字符串的输出。
你可以按照以下步骤来实现这个功能:
1. 编写一个名为`reverse_string`的函数,该函数接受一个字符串作为参数,通过交换首尾字符的方式实现字符串逆序。函数定义如下[^1]:
```c
// 反序字符串x并返回逆序后的字符串
char* reverse_string(char *x) {
int len = strlen(x);
if (len == 0) return x; // 如果字符串为空,直接返回
char* reversed = malloc(len + 1); // 分配空间存储逆序后的字符串
if (!reversed) { // 检查内存分配是否成功
printf("Memory allocation failed.\n");
return NULL;
}
int i = 0, j = len - 1; // 定义两个指针,从两端开始交换字符
while (i < j) {
reversed[i] = x[j];
reversed[j] = x[i];
i++;
j--;
}
reversed[len] = '\0'; // 添加字符串结束符
return reversed;
}
```
2. 在主函数`main()`中,读取用户输入的字符串,调用`reverse_string`函数并输出结果:
```c
main() {
char input[50];
printf("Enter a string (up to 50 characters): ");
fgets(input, sizeof(input), stdin); // 注意这里要移除末尾的换行符
input[strcspn(input, "\n")] = '\0'; // 移除换行符
char* reversed_str = reverse_string(input);
if (reversed_str != NULL) {
printf("Reversed string: %s\n", reversed_str);
free(reversed_str); // 释放内存
} else {
printf("Failed to reverse the string.\n");
}
}
```
阅读全文
相关推荐














