回文字符串是指正读和倒读都一样的字符串,如"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
函数释放内存,以避免内存泄漏。