String 节目一直在给我;堆芯倾卸;,虽然我可以';我不知道为什么
所以,我写了这个程序,它接收一个字符串作为输入,这个字符串由姓氏和名字组成,这样写:“詹姆斯:勒布朗”。程序应该复制结构的姓氏变量中的姓氏,名称也是如此。没有编译错误,只有核心转储错误。有人能解释一下原因吗String 节目一直在给我;堆芯倾卸;,虽然我可以';我不知道为什么,string,struct,coredump,String,Struct,Coredump,所以,我写了这个程序,它接收一个字符串作为输入,这个字符串由姓氏和名字组成,这样写:“詹姆斯:勒布朗”。程序应该复制结构的姓氏变量中的姓氏,名称也是如此。没有编译错误,只有核心转储错误。有人能解释一下原因吗 #include <stdio.h> #include <string.h> struct author{ char *name; char *surname; }; typedef struct author author_t; au
#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);
}
#包括
#包括
结构作者{
字符*名称;
查*姓;
};
typedef结构作者;
author_t separate(字符*字符串);
内部主(空){
姓名;
printf(“Inserisci nome e cognome:”);
获取(姓名);
分开(姓名);
}
作者(字符*字符串){
int i,n=0;
作者;
对于(i=0;ioff-the-top-of-the-the-the-the-of-the-the-the-the-the-the-the-the-the-the-the-head-Id-say递增n不是一个好主意,因为n是要复制的项数,而不是字符串中的位置
struct author{
char *name;
char *surname;
};
....
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));
}
(当然,姓氏也一样)是的,但递增n表示遇到“:”时,n是要复制的字符数。我并不认为结构声明实际生成了一个实例,因为它后面没有名称;我不认为结构声明实际生成了一个实例(存储)因为它在;后面没有名称,也没有声明变量。我还建议不要使用字符串作为变量名-它可以在编译器内部使用,例如作为受保护的名称“系统”“变量”。不要使用这些名称,否则会出现意外情况。。。
author_t auth;
auth.name = (char *) malloc(30);