c语言 - 使用字符指针 - > 分段错误



我是一个初学者,在学校,我们有任务使用指针分开字符数组。我想将名称和生日拆分(定界符='。')。我的解决方案非常适合该名称,但在生日上这样做我会得到细分错误。

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); 

最新更新