//Generating all possible binary strings of lenght 'n'
#include<stdio.h>
#include<stdlib.h>
char a[20];
int ind = 0;
void generateAllBinaryStrings(int n, char **arr,int `i){
if (i == n){
printf("%s \n",a);
arr[ind] = a;
ind++;
return ;
}
a[i] = '0';
generateAllBinaryStrings(n, arr, i+1);
a[i] = '1';
generateAllBinaryStrings(n, arr, i+1) ;
}
int main(){
int n = 3,k;
char *arr[8];
generateAllBinaryStrings(n, arr, 0);
printf("\n");
for(k=0;k<8;k++)
printf("%s\n",arr[k]);
return 0;
}
//为什么此代码给出奇怪的输出? //如何返回在另一个中更新的指针值数组 函数main()???
//What's wrong with this code?
//output:
cherrycharan@cherrycharan-HP-Notebook:~/Desktop$ ./a.out
// In generateAllBinaryStrings()
000
001
010
011
100
101
110
111
// In main()
111
111
111
111
111
111
111
111
//为什么此代码给出奇怪的输出? //如何返回在另一个中更新的指针值数组 函数main()???
//此代码有什么问题?
答案 0 :(得分:1)
由于您正在进行指针分配,
arr
中的指针将始终指向a
的{{1}}的更新内容。
111
改为复制内容。
arr[ind] = a;
并确保您之后arr[ind] = strdup(a);
。