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` 函数返回一个指向新字符串的指针。