我要做的是:读取定义的最大值的 x 个字符串 s_1 ... s_x。长度 l=1000000 并存储它们。变量 x 作为输入给出,表示应该是全局定义的。
我想怎么做是:
全局定义指向 char 的指针:
char** S;
在本地,从输入中读取 x 后,为指向 char 的 x 指针分配空间:
S = (char**) malloc(sizeof(char*)*x);
为每个单个字符串 s_i 本地分配空间并将字符串读入分配的空间:
while(i<x){ S[i] = (char*) malloc(sizeof(char)*1000000); scanf("%s",S[i]); i++; }
当我尝试访问
S[0][0]
它给出了内存访问错误。有任何想法吗?谢谢!
编辑:
我打印了数组,它工作正常,所以问题确实出在访问代码中。在这里:任何人都可以看到有什么问题?因为我不能...
makeBinary(){
printf("inside makeBinary()\n");
S_b = malloc(sizeof(int)*1000000*x);
length = malloc(sizeof(int)*x);
int i;
int j;
for(i=0;i<x;i++){
for(j=0;j<1000000;j++){ printf("1\n");
if(S[i][j]=='\0'){ printf("2\n");
length[i] = j;
break;
}else{
S_b[i][j] = S[i][j]-96; printf("3\n");
}
}
}
}
它打印“1”然后崩溃。我知道代码远非最佳,但现在我只想先解决问题。谢谢!