[英]Segmentation Fault when using getline() C
我看過的每個其他線程都有一個問題,就是沒有將line初始化為NULL,len初始化為0。這是我的代碼的一部分:
char* line = NULL;
char* line2 = NULL;
size_t len = 0;
size_t len2 = 0;
char *function = NULL;
size_t read, read2; //read2 gia to config
while ((read = getline(&line, &len, op)) != -1)
{
line[read - 2] = 0;
char* pch;
pch = strtok(line, " ");
strcpy(function, pch);
提前致謝。
您的代碼有多個問題,
read < 2
則您的索引小於0
如果pch
為NULL
,則取消引用NULL
指針
關於strtok()
注釋,
NULL
。 strchr()
, strstr()
或strpbrk()
,所有這些都沒有strtok()
的限制。 請注意,我並不是說您不應該使用strtok()
,在某些合理的情況下,它是BEST選項,我只是警告您一些限制,並闡明其預期的行為,以便您正確地使用它,並假設它是僅僅因為您“ 知道 ”輸入而返回了某些內容,簡直是一種糟糕的編程習慣。 總是檢查錯誤,最好是為什么程序失敗而不是完全困惑。
實際上,說或認為“ 您知道輸入 ”是錯誤的,因為
編寫用於處理單個輸入的代碼有什么意義?
這不是您的想法,有些字符可能對您很清楚,但是編輯器可以像使用' '
空格一樣呈現'\\t'
制表符。
您不應將其歸咎於getline()
因為眾所周知它可以正常工作,所以這幾乎不是問題。
您的程序會調用未定義的行為 ,因此無法確定問題的確切發生原因,因為它可能發生在某處,並且程序會繼續執行,直到有人執行某些操作來觸發分段錯誤為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.