不是所有内容都应该存在,为什么会出现细分错误?

时间:2018-12-23 18:42:37

标签: c arrays string char scanf

这是导致分段错误的小代码片段,我不知道为什么...

char *firstName[50];
char *lastName[50];

for (int counter = 0; counter < 10; counter ++) {           
        fscanf(config, "%s %s\n", firstName[counter], lastName[counter]);

此代码scanf配置文件是否应采用第一个和第二个字符串,并将它们分别存储在firstName [0,1,2 .. counter]和lastName [counter]中?

1 个答案:

答案 0 :(得分:2)

这里

char *firstName[50];

firstName是由50个字符组成的指针数组 ,如果要将任何内容存储到每个 char指针中,则需要为其分配内存。对于例如

for (int counter = 0; counter < 10; counter ++) {
        firstName[counter] = malloc(SIZE_FIRST); /* memory allocated for firstName[counter], now you can store into it */ 
        lastName[counter] = malloc(SIZE_LAST);           
        fscanf(config, "%s %s\n", firstName[counter], lastName[counter]);
}

完成firstNamelastName的处理后,释放动态分配的内存,以避免内存泄漏。