C语言每日一题——倒转字符
发布人:shili8
发布时间:2025-03-10 11:23
阅读次数:0
**C语言每日一题——倒转字符**
在编程中,常见的一个需求是将一个字符串的字符顺序进行反转。例如,将 "hello" 变成 "olleh"。这种需求在很多场景下都有应用,比如说,需要生成一个随机的密码或者是需要对输入的文本进行处理等。
**问题描述**
给定一个字符串 `str`,要求将其字符顺序反转,并返回结果。
**示例代码**
c#include <stdio.h>
#include <string.h>
// 将 str 的字符顺序反转,并返回结果char* reverseStr(char* str) {
int len = strlen(str);
// 创建一个新字符串,用于存放反转后的结果 char* reversed = (char*)malloc((len +1) * sizeof(char));
// 将原字符串的最后一个字符复制到新字符串的第一个位置 for (int i = len -1; i >=0; --i) {
reversed[len - i] = str[i];
}
// 添加结束符 '0'
reversed[len] = '0';
return reversed;
}
// 测试函数void testReverseStr() {
char* str = "hello";
printf("原字符串:%s
", str);
// 反转字符串 char* reversed = reverseStr(str);
printf("反转后字符串:%s
", reversed);
free(reversed); //释放内存}
int main() {
testReverseStr();
return0;
}
**代码注释**
1. **函数定义**: `reverseStr` 函数的作用是将输入的字符串 `str` 的字符顺序反转,并返回结果。
2. **长度计算**: 使用 `strlen` 函数获取原字符串的长度,用于创建新字符串的大小。
3. **内存分配**: 使用 `malloc` 分配足够大小的内存来存放反转后的新字符串。
4. **反转字符**: 遍历原字符串,从最后一个字符开始复制到新字符串中,直到第一个字符为止。
5. **结束符添加**: 在新字符串的末尾添加结束符 `0`。
6. **测试函数**: `testReverseStr` 函数用于测试 `reverseStr` 函数的正确性。
**注意事项**
* **内存释放**: 在使用 `malloc` 分配的内存后,必须通过 `free` 函数释放该内存,以避免内存泄漏。
* **函数返回值**: `reverseStr` 函数返回一个指向新字符串的指针。

