テキストファイルを解析してポインタ配列に格納するプログラムがあります。私には1つの問題しかありません。 char **
オブジェクトに文字列の配列を格納しようとしていますが、char **
に値を割り当てるたびに、segフォルトが発生します。char ** segフォールディングへの値の割り当て
#include "database.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char **get_values(int recipe_num, char *file) {
int placehold_num=recipe_num;
char *text=parse_recipes(file);
int num_recipes=count_recipes(file);
char **array_strings;
int index=-1;
for (int i=0;*(text+i)!='\0';i++) {
if (*(text+i)=='R' && *(text+i+1)=='e' && *(text+i+6)==':' && (text+i+7)==' ') {
i+=13;
index++;
for (int j=0;*(text+i+j-1)!='\n';j++) {
printf("%c",*(text+i+j));
*(*(array_strings+index)+j)=*(text+i+j);
}
}
}
}
これは私が*(text+i+j)
から必要な文字を出力しますが、次の行に障害をSEG。私はそれが呼び出されている別の関数で問題ではないことを非常に確信しています、私はarray_strings
を逆参照している方法で何かでなければならないと思います。どんな助けでも大歓迎です。
[mcve]を投稿してください。デバッガから何を伝えましたか? – melpomene
'array_strings'がポイントするメモリを割り当てたことはありません。 – Barmar
'text + i + j'は2次元配列の要素にアクセスする正しい方法ではありません。 'text + i * row_size + j' – Barmar