我想編寫一個程序,它將從給定的字符串中獲取子字符串。將多個字符串分別放入一個數組中
然後,程序將檢查子字符串是否是迴文。如果迴文,它會將它們列在其他任何地方,然後它將整理出獨特的迴文。
但是,有沒有任何過程,以便我可以將多個字符串放入數組中?
我已經寫了一個程序,將計數,有多少個子字符串是迴文,但是,我無法弄清楚如何從它們中計算唯一的迴文。
我的代碼是在這裏如下:
#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