我有一個解析文本文件並將其存儲在指針數組中的程序。我只有一個問題。我試圖在一個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)
想要的字符,但賽格故障。我非常確定這不是一個被調用的函數的問題,我認爲它必須是我提供的方式array_strings
。任何幫助是極大的讚賞。
請發表[mcve]。你的調試器告訴你什麼? – melpomene
你從來沒有爲'array_strings'指定任何內存。 – Barmar
'text + i + j'不是訪問二維數組元素的正確方法。它應該是'text +我* row_size + j' – Barmar