我需要知道我是否正确使用了getline

时间:2011-03-29 07:26:50

标签: c getline

我在C中使用了getline()函数,当我多次使用它时,它一直给出我的seg错误,就像数组一样。这是我写的方式:

temp = (char *)malloc(sizeof(char)*clen); 
read = getline(&temp, &clen, stdin);
tn = strtok(temp, ",");
strcpy(travel[tripnum].name, tn);
tn = strtok(NULL, ",");
travel[tripnum].country = tn;
free((void *) temp);

如果我宣布错误的话,请告诉我

4 个答案:

答案 0 :(得分:2)

this getline tutorial所示,你需要分配(clen + 1)。一个额外的终端NULL。

答案 1 :(得分:0)

你有没有试过这样做? temp =(char *)malloc(sizeof(char)* clen + 1);

由于空终止字符串

答案 2 :(得分:0)

尝试将此与其他人所说的一起使用。 我觉得getline函数clen应该在没有&符号的情况下使用。 像read = getline(& temp,clen,stdin);

答案 3 :(得分:0)

您的tn变量(strtok()的结果)指向temp缓冲区内。

temp缓冲区在代码段的最后一行被销毁,但tn指针中的一个(temp内部)已保存在travel[tripnum].country

这个travel[tripnum].country是一个悬空指针,通过它的所有访问都是无效的。