我是一个初学者,在学校,我们有任务使用指针分开字符数组。我想将名称和生日拆分(定界符='。')。我的解决方案非常适合该名称,但在生日上这样做我会得到细分错误。
int main(int argc, char *argv[])
{
char *fullname;
char *name;
char *lastname;
char *birthday;
char *day;
fullname = argv[1];
birthday = argv[2];
int i = 0;
int y = 0;
int z = 0;
while(fullname[i] != '.'){
char x = fullname[i];
name[i] = x;
fullname[i] = ' ';
i++;
}
i++;
while(fullname[i] != ' '){
char x = fullname[i];
lastname[y] = x;
fullname[i] = ' ';
i++;
y++;
}
while(birthday[z] != '.'){
char b = birthday[z];
day[z] = b;
z++;
}
}
在命令行中输入(./a是cygwin上的exe文件):
./a mister.gold 11.05.2005
输出:
segmentation fault
当我在没有最后一个循环的情况下启动代码时,我的输出是:
mister
gold
char *name ;
char *lastname;
两个char阵列指针,但是他们指出了两个?什么都没有,所以您基本上试图访问您不拥有的内存为他们分配记忆,您应该做:
// assuming the maximum size if 512 for example or you can give it any size you think is enough
char *name =malloc(512);
char *lastname=malloc(512);
现在,他们指出了您可以访问的东西&修改
使用它们后,您应该像以下动态分配的内存分配
free(lastname);
free(name);