我正试图在函数中为main中的char数组指针数组分配空间并放入文件数据。运行程序时出现分段错误。有人能告诉我为什么吗?
dataword[0]在函数中正确打印。
这是我的功能:
void database_extract (char **data_words) {
FILE *f_data;
f_data = fopen("database.txt","r");
struct stat st;
stat("database.txt", &st);
data_words = (char **)malloc(st.st_size * sizeof(char));
if (data_words == NULL) {
printf("No roomn");
exit(EXIT_FAILURE);
}
data_words[0] = "test";
printf("%s",data_words[0]);
}
这是我的主要:
int main () {
char **data_words;
database_extract (data_words);
printf("%s",data_words[0]);
}
如有任何帮助,我们将不胜感激。
当您希望某个函数初始化某个东西时,需要在函数调用中使用&
,在函数签名中使用一个额外的*
void database_extract (char ***data_words) {
由匹配
database_extract (&data_words);
您需要向函数传递一个指向data_words数组的指针,以便在main中使用分配。
试试这个:
void database_extract (char ***data_words) {
FILE *f_data;
f_data = fopen("database.txt","r");
struct stat st;
stat("database.txt", &st);
*data_words = (char **)malloc(st.st_size * sizeof(char));
if (data_words == NULL) {
printf("No roomn");
exit(EXIT_FAILURE);
}
data_words[0] = "test";
printf("%s",data_words[0]);
}
主要是:
int main () {
char **data_words;
database_extract (&data_words);
printf("%s",data_words[0]);
}
我不确定我是否完全正确,这有时会让我感到困惑,但我的想法是传递一个指向函数的指针。