回文字符串是指正读和倒读都一样的字符串,如"level"、"radar"等。下面是一个简单的C语言程序,使用动态内存管理实现判断一个字符串是否为回文字符串的功能:
#include#include #include 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
函数释放内存,以避免内存泄漏。