私がしなければならないことは、次のとおりです。定義された最大の 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」を出力してからクラッシュします。コードが最適とはほど遠いことはわかっていますが、今のところ、最初に問題を解決したいと思います。ありがとう!