我想编写一个程序,它将从给定的字符串中获取子字符串。将多个字符串分别放入一个数组中
然后,程序将检查子字符串是否是回文。如果回文,它会将它们列在其他任何地方,然后它将整理出独特的回文。
但是,有没有任何过程,以便我可以将多个字符串放入数组中?
我已经写了一个程序,将计数,有多少个子字符串是回文,但是,我无法弄清楚如何从它们中计算唯一的回文。
我的代码是在这里如下:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
char* substring(char*,int,int);
int is_palindrome(char array[],int length);
int main()
{
char string[85],*pointer;
int position,length,temp,string_length,pesky;
printf("enter a string\n");
while(gets(string)){
position=1,length=2;
temp=string_length=pesky=strlen(string);
while(position<=string_length){
while(length<=temp){
pointer=substring(string,position,length);
if(is_palindrome(pointer,length)==1){pesky++;puts(pointer);}
free(pointer);
length++;
}
position++;
temp--;
length=2;
}
printf("The string '%s' contains %d palindromes.\n",string,pesky);
}
return 0;
}
char* substring(char *string,int position,int length)
{
char *pointer;
int c;
pointer=malloc(length+1);
if(pointer==NULL){
printf("unable to locate memory.\n");
exit(EXIT_FAILURE);
}
for(c=0;c<position-1;c++){
string++;
}
for(c=0;c<length;c++){
*(pointer+c)=*string;
string++;
}
*(pointer+c)='\0';
return pointer;
}
int is_palindrome(char array[],int length)
{
int k,j,o=0;
for(k=length-1,j=0;k>j;k--,j++){
if(array[k]!=array[j]){
o=1;
break;
}
}
if (o==0) {return 1;}
else {return 0;}
}
避免使用获取。他们非常危险。 – perilbrain 2012-08-07 12:11:57
我不明白你@Mechanicalsnail ..我在代码中有错误。我现在编辑它..! – 2012-08-07 12:18:29
你的代码太糟糕了......( – Eregrith 2012-08-07 12:23:39