我无法在主函数中检索更新的值

时间:2019-06-10 08:06:50

标签: c arrays string

//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()???

//此代码有什么问题?

1 个答案:

答案 0 :(得分:1)

由于您正在进行指针分配, arr中的指针将始终指向a的{​​{1}}的更新内容。

111

改为复制内容。

arr[ind] = a;

并确保您之后arr[ind] = strdup(a);