Итак, я написал эту программу, которая получает в качестве входной строки строку, состоящую из фамилии и имени, написанную следующим образом: «james: lebron». Программа должна скопировать фамилию в переменной фамилии структуры, то же самое касается имени. Нет ошибок компиляции, просто ошибка дампа ядра. Кто-нибудь может объяснить мне почему?Программа продолжает давать мне «core dump», хотя я не могу найти почему
#include <stdio.h>
#include <string.h>
struct author{
char *name;
char *surname;
};
typedef struct author author_t;
author_t separate(char *string);
int main(void){
char *name_surname;
printf("Inserisci nome e cognome: ");
gets(name_surname);
separate(name_surname);
}
author_t separate(char *string){
int i, n=0;
author_t temp;
for(i=0; i<(strlen(string)-1); i++){
while(string[i]!=':')
n++;
strncpy(temp.surname, string, n);
strncpy(temp.name, &string[n+2], (strlen(string)-n-2));
}
return(temp);
}
да, но увеличивающиеся п служит мне, когда «:» встречается, п число символов, подлежащих копированию –
Я не делал, что объявление структуры фактически создало экземпляр, поскольку у него нет имени после; – feet
Я не думал, что объявление структуры фактически сделало экземпляр (Хранение), поскольку у него нет имени после; и не объявляет переменную. Я бы также посоветовал не использовать строку в качестве имени переменной - ее можно было бы использовать внутри компилятора, т. Е. Как защищенное имя «система» «переменная». не используйте их или ожидайте неожиданного ... – feet