繁体   English   中英

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

[英]I need to know if I am using getline correctly

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

如果我声明错误,请告诉我

如此getline教程中所示,您需要分配(clen + 1)。 一个额外的终端NULL。

你尝试过这个temp =(char *)malloc(sizeof(char)* clen + 1);

由于空终止字符串

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM