私は文字列の可能なすべての順列を生成するCプログラムを書こうとしています(例えば、以下のコードでは123)。私は成功しましたが、可能な各順列の後にいくつかのゴミ値を生成します。考えられる原因を見つけるのを手伝ってください。初期化とは何か? コード:文字列のすべての可能な順列を生成する私の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()よりも少し良いかもしれません。 –
うん、それは今動作します!私はそれを終了し、今は正常に動作します。これは、JavaからCへの切り替えの影響だけではありません。どうもありがとう! –
@Chris Lutz:私が言ったように、私のCは非常に錆びています.-D –