已经有两天我遇到了这个问题。 我不知道如何处理指针,我已经阅读了一些书籍,但他们只是告诉他们是什么,而不是如何用结构或功能来实现它们。
这是一个简单的示例,我使用char**
行和2^n
列动态分配n
。
如何初始化字符串使其等于" \ 0"因为它是一个指针?它给出了两个嵌套的错误..我该怎么办?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void alloc_str(char **str,int n);
int main()
{
int i,j,n;
char **str;
printf("n: \n");
scanf("%d", &n);
alloc_str(str,n);
for(i=0;i<pow(2,n);i++)
for(j=0;j<n;j++)
str[i][j] = "\0";
return 0;
}
void alloc_str(char **str,int n){
int i;
str = malloc (pow(2,n) * sizeof(char *));
if(str == NULL) exit(1);
for(i=0;i<pow(2,n);i++){
str[i] = malloc(n * sizeof (char));
if(str[i] == NULL) exit(1);
}
答案 0 :(得分:1)
str[i][j] = "\0";
此表达式分配字符串。你应该使用单引号 -
str[i][j] = '\0';
要初始化,您不需要循环,使用memset
,或者使用calloc
进行分配和初始化。