簡體   English   中英

我的代碼給出了段錯誤。 我不知道如何調試,甚至不知道錯誤在哪里

[英]My code gives segfault. I don't know how to debug or even find where the error is

我剛剛編寫了一個將中綴表示法轉換為后綴表示法的程序,但出現段錯誤。 這是我第一次遇到細分錯誤,也不知道如何查找問題所在。 我瀏覽了幾次代碼,但是我找不到我的代碼試圖訪問受限的內存空間,或者是否存在導致seg錯誤的其他問題(我什至不知道是什么seg錯誤)。

我不確定是否可以將整個代碼粘貼到此處。 因此,我將其放在pastebin上: http : //pastebin.com/M0mTU8Jg

另一個問題:在第13行的代碼中,如果將strcat(")",infix)替換為infix[strlen(infix)]=")" ,則會收到以下警告: warning: assignment makes integer from pointer without a cast [enabled by default] 此警告的原因是什么? 程序后面類似的語句不會發出任何警告,例如,在行no。 24

編輯: seg錯誤是因為我在strcat()函數中使用了錯誤的參數順序,因此它試圖將字符串追加到作為只讀內存的常量。

沒關系,第二個問題是我為char分配了一個字符串(char *),因此發出警告。 只需將雙引號替換為單引號即可。

您確實確實需要知道如何使用調試器,並找出您的代碼在哪段隔離,這是一項重要技能。 話雖如此,我立即看到一個原因:

strcat(")",infix);

strcat(char * dest, cosnt char * src)附加到dest ,在這種情況下, dest是存儲在只讀存儲器中的字符串常量。 也許所有必要的就是將參數的順序反轉為strcat() ,但是我不知道infix變量的意圖。

您可以使用調試器運行代碼嗎? 它會告訴您將發生什么線路段故障。 這是關於段錯誤的信息: http : //en.wikipedia.org/wiki/Segmentation_fault

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM