Я имею ошибки сегментации на моем strcat в коде ниже:Сегментация Fault Использование strcat()
csv* lines_into_csv(int m,char* array[LINES_MAX][COLUMNS]){
char *first_string, *final_string;
first_string = (char*)calloc(400,sizeof(char));
final_string = (char*)calloc(400,sizeof(char));
csv *earthquake = malloc(sizeof(csv)*LINES_MAX);
int n, j;
for(j = 0; j < m; j++){
for(n = 0; n < COLUMNS; n++){
if (array[j][n] != NULL) {
if(n < 4){
strcat(first_string, array[j][n]);
}
else if(n == 4){
earthquake[j].mag = atof(array[j][n]);
}
else {
strcat(final_string, array[j][n]);
}
}
}
earthquake[j].start_of_line = (char*)calloc(200,sizeof(char));
earthquake[j].end_of_line = (char*)calloc(200,sizeof(char));
earthquake[j].start_of_line = strdup(first_string);
earthquake[j].end_of_line = strdup(final_string);
free(first_string);free(final_string);
}
return earthquake;
}
структура типа CSV состоит из двух полукокса * и поплавка, который является числом от того, где я сортировкой файл.
'strcat (first_string, tmp);' - вы не инициализировали 'first_string', который не выполняется' malloc() 'и' strcat() 'ожидает найти nul-терминатор. Если он не найдет его в 'first_string', он будет продолжать пахать память до тех пор, пока это не произойдет, тогда кто знает, куда он скопирует вашу другую строку? То же самое с 'final_string' и, возможно, и с другими, так как вы' malloc() 'загрузите материал, а затем приступите к работе с ним, не инициализируя ничего. –
это может быть .... что вы предлагаете решить? –
Используйте 'calloc()'. –