2011-03-29 89 views
0

我在C中使用getline()函數,並且當我多次使用它時,它會一直給我seg錯誤,就像在數組中一樣。下面是我寫它:我需要知道我是否正確使用getline

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

請讓我知道,如果我不當

+0

C沒有'getline'函數。你試圖使用誰的'getline'函數? – 2011-03-29 07:33:16

+0

它不? [這是怎麼回事?](http://www.crasseux.com/books/ctutorial/getline.html) – fnokke 2011-03-29 07:38:21

+0

@fnokke:'getline'是一個GNU擴展,這很好,但問題只是標記爲「C」這就是我問這個問題的原因。從手冊頁:「getline()和getdelim()都是GNU擴展,從libc 4.6.27開始可用。」 – 2011-03-29 07:58:28

回答

0

您是否嘗試過這樣做 temp =(char *)malloc(sizeof(char)* clen + 1);

由於零結束的字符串

0

請嘗試將其與其他人告訴的一起使用。 我覺得在getline函數clen應該使用沒有&符號。 Like read = getline(& temp,clen,stdin);

0

您的tn變量(strtok()的結果)點位於temp緩衝區內。

temp緩衝區程式碼中的最後一行破壞,但是tn指針(至temp內)中的一個已經被保存在travel[tripnum].country

這個travel[tripnum].country是一個懸掛指針,通過它的所有訪問都是無效的。

相關問題