c-功能中的分配,主要不可用



我正试图在函数中为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]);

}

我不确定我是否完全正确,这有时会让我感到困惑,但我的想法是传递一个指向函数的指针。

相关内容

  • 没有找到相关文章

最新更新