温馨提示×

C语言中回文字符串的动态内存管理

小樊
82
2024-04-26 17:16:52
栏目: 编程语言

回文字符串是指正读和倒读都一样的字符串,如"level"、"radar"等。下面是一个简单的C语言程序,使用动态内存管理实现判断一个字符串是否为回文字符串的功能:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int isPalindrome(char *str) {
    int len = strlen(str);
    char *rev = (char *)malloc(len * sizeof(char));
    int i, j;
    
    for (i = 0, j = len - 1; i < len; i++, j--) {
        rev[i] = str[j];
    }
    rev[i] = '\0';
    
    int result = strcmp(str, rev);
    
    free(rev);
    
    if (result == 0) {
        return 1; // 是回文字符串
    } else {
        return 0; // 不是回文字符串
    }
}

int main() {
    char str[100];
    
    printf("输入一个字符串:");
    scanf("%s", str);
    
    if (isPalindrome(str)) {
        printf("是回文字符串\n");
    } else {
        printf("不是回文字符串\n");
    }
    
    return 0;
}

在上面的程序中,首先定义了一个isPalindrome函数,该函数接受一个字符串作为参数,动态分配内存空间用于存储字符串的逆序。然后通过比较原字符串和逆序字符串的结果,判断是否为回文字符串。最后在main函数中调用isPalindrome函数,输出判断结果。

需要注意的是在使用完动态分配的内存后,需要使用free函数释放内存,以避免内存泄漏。

0