这是导致分段错误的小代码片段,我不知道为什么...
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]中?
答案 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]);
}
完成firstName
和lastName
的处理后,释放动态分配的内存,以避免内存泄漏。