所以,我寫了這個程序,它接收到一個字符串,其中包含姓和名,如下所示:「james:lebron」。程序應該在結構的姓氏變量中複製姓氏,名稱也一樣。沒有編譯錯誤,只是核心轉儲錯誤。有人可以請解釋我爲什麼?程序不斷給我「核心轉儲」,但我找不到爲什麼
#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);
}
沒錯,但n加1成爲我的,當「:」遇到,n是數字要複製的字符 –
我沒有做結構聲明實際上做了一個實例,因爲它沒有名稱後; – feet
我不認爲結構聲明實際上做了一個實例(存儲),因爲它沒有一個名字後;並沒有聲明一個變量。我還建議不要使用字符串作爲變量名 - 它可以在編譯器內部使用,即像受保護的名稱'system''variable'一樣。不要使用這些或期望意外... – feet