#include<stdio.h>
#include <string.h>
char *generate(char a[],int s,int e,char r[])
{
if(s>e){
printf("%s\n ",r); //Prints the correct value "rempD" here
return r;
}
int i,asci[128]={0};
for(i=s;i<=e;i++)
if(asci[a[i]]==1)
break;
else
asci[a[i]]=1;
char t[i-s];
t[i-s]='\0';
for(i=i-1;i>=s;i--)
t[i-s]=a[i];
if(r==0||strlen(t)>strlen(r))
return generate(a,s+1,e,t);
else
return generate(a,s+1,e,r);
}
int main()
{
char a[]="prrempD";
printf("Largest unique string:\n%s",generate(a,0,strlen(a)-1,NULL)); // But prints a garbage value here
}
이 함수는 문자열 내에서 가장 큰 고유 부분 문자열을 반환하는 데 사용됩니다. 문자 배열이 반환되면 가비지 값을 반환합니다.함수에서 문자 배열을 반환하면 가비지 값이 인쇄되지만 함수에서 제대로 인쇄됩니까?
'char t [i-s]; t [i-s] = '\ 0';은 나쁘다. 아마도'char t [i-s + 1];을 원할 것이다. t [i-s] = '\ 0';'. – chux