[英]Need to know how to parse words by space in c. Also need to know if I am allocating memory correctly?
[英]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.