C中的建筑结构分割故障

时间:2014-07-14 02:20:09

标签: c segmentation-fault

我正在尝试将一个字符串放入结构数组内的结构索引0中,但我仍然保持分段错误。谁知道什么事情发生?我用逗号标记字符串,将名称和年龄标记发送到构建数组的函数,函数应该在结构中输入名称和数字,但每次我尝试从外部向结构数组中添加一个条目声明我得到了分段错误,所以我试图错误地输入这些元素吗?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct info{
    char name[20];
    int age;

};

void buildarray(struct info array[],char* namee,char* age);

int main()
{
    struct info arrays[3];
    char buffer[] = "john,25";
    char* del = ",";
    char* token;
    char* number;
    char* name;

    token = strtok(buffer,del);
    name = token;
    while(token != NULL)
    {
        token = strtok(NULL,del);
        number = token;
    }
    buildarray(arrays,name,number);

    printf("%s %d",arrays[0].name,arrays[0].age);


}

void buildarray(struct info array[],char* namee,char* age)
{
    char buffer[10];
    strcpy(array[0].name,namee);
    int amount = atoi(age);
    array[0].age = amount;
}

1 个答案:

答案 0 :(得分:4)

while(token != NULL)
{
    token = strtok(NULL,del);
    number = token;
}
buildarray(arrays,name,number);

在最后一次传递中,当tokenNULL时,number也是NULL。然后,您buildarrayNULL传递给atoi,然后传递给{{1}}。吊杆。