定义一个任意长度字符数组,输入字符串,并将字符串逆序输出。 例如:输入abcd,输出则为dcba,C语言
时间: 2024-10-14 22:12:17 浏览: 54
在C语言中,你可以定义一个动态大小的字符数组来存储任意长度的字符串,并通过循环结构将其逆序输出。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 需要stdlib.h头文件以使用malloc函数
// 动态分配内存
void* myMalloc(size_t size) {
void* ptr = malloc(size);
if (ptr == NULL) {
fprintf(stderr, "Memory allocation failed.\n");
exit(1);
}
return ptr;
}
// 释放动态分配的内存
void myFree(void* ptr) {
free(ptr);
}
int main() {
char* input; // 定义字符指针
printf("请输入一个字符串:");
scanf("%s", input); // 输入字符串
size_t len = strlen(input); // 获取字符串长度
char* reversed = myMalloc(len + 1); // 动态分配空间,加上空字符作为字符串结束标志
// 逆序复制字符串
for (size_t i = len - 1; i >= 0; i--) {
reversed[i] = input[i]; // 从原字符串的最后一个字符开始存入新数组
}
reversed[len] = '\0'; // 添加字符串结束符
// 输出逆序字符串
printf("逆序字符串是:%s\n", reversed);
// 释放不再需要的内存
myFree(reversed);
return 0;
}
```
在这个例子中,我们首先动态分配了足够的内存来存放逆序后的字符串。然后通过一个for循环,从原始字符串的末尾开始,逐个字符存入到新数组中。最后,我们将字符串结束标志添加到数组末尾并输出结果。
注意:由于C语言标准库不提供自动内存管理功能,所以这里使用了自定义的`myMalloc`和`myFree`函数来进行内存分配和释放。在实际项目中,更推荐使用C++的`std::string`或者C11及以上版本的`std::array<char>`来避免这些问题。
阅读全文