나는 문자열의 모든 가능한 순열을 생성하는 C 프로그램을 작성하려고 노력해왔다. 나는 성공했지만 각 순열 후에 가비지 값을 생성합니다. 가능한 원인을 찾는데 도와주세요. 초기화와 관련이 있습니까? 코드 :문자열의 모든 가능한 순열을 생성하는 C 프로그램의 버그는 어디에 있습니까?
#include <stdio.h>
void permute(char number[],char out[],int level,int used[]);
int main()
{
char number[] = "123";
char out[3] = "asd"; // Random initialization
int used[] = {0,0,0}; // To check if number has been used in the string output
permute(number,out,0,used);
}
void permute (char number[],char out[],int level,int used[])
{
if (level == 3)
{
printf("%s\n",out);
return;
}
int i;
for(i = 0; i < 3;i++)
{
if(used[i] == 1) continue;
out[level] = number[i];
used[i] = 1;
permute(number, out, level + 1,used);
used[i] = 0;
}
}
putchar() 또는 putc()가 전체 printf()보다 약간 좋을 수도 있지만별로 중요하지 않습니다. –
지금까지 작동합니다! 나는 그것을 종료 null 및 지금 잘 작동합니다. 이는 Java에서 C로 잠시 동안 전환 할 때 발생하는 결과입니다. 고마워요! –
@Chris Lutz : 내가 말했듯이, 내 C는 매우 녹슬다 .-D –