簡體   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