Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
179 views
in Technique[技术] by (71.8m points)

c - Allocation in function, unusable in main

I am trying to allocate space and put in file data in my function for my array of char arrays pointer in main. I get a segmentation fault when I run the program. Can anyone tell me why?

datawords[0] is printed correctly in the function.

This is my function:

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 room
");
  exit(EXIT_FAILURE);
}
data_words[0] = "test";
printf("%s",data_words[0]);
}

This is my main:

int main () {       
char **data_words;
database_extract (data_words);
printf("%s",data_words[0]);
}

Any help would be greatly appreciated.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

When you want something to be initialized by a function you need to use a & on the function call and one extra * in the function signature

void database_extract (char ***data_words) {

which is matched by

database_extract (&data_words);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...