c語言程式編譯沒有錯誤執行時出錯問題在哪

2021-03-19 18:19:35 字數 1157 閱讀 4664

1樓:匿名使用者

1 編譯階段,執行的是對單個檔案的轉換,從源**轉換成二進位制檔案。

2 連結階段,將每個原始檔轉成的二進位制檔案,及相關的系統庫檔案共同打包生成可執行檔案。

3 從定義上可以看出,連結階段,出現錯誤有兩種可能:

1) 函式中引用了不存在的函式。

2) 編譯環境有問題,導致ld出錯。

2樓:在角落悠哉的風

首先編譯已經報錯: 有一個找不到的符號連結_max

max這個函式你只宣告瞭但沒有定義,也就是編譯器只知道有這麼個函式,但是函式是做什麼的,不知道。

如果你是新手,諮詢一下其他同學或者老師,這個問題實在不應該發出來,自學才是最好的老師。

3樓:匿名使用者

#include

int max(int a,int b);

int main(void)

int max(int a,int b)

max函式未定義

c語言中,下面編寫的程式,編譯無錯誤,執行時顯示有一個錯誤,怎麼回事呢?

4樓:永恆の眷戀

第10行,strcmy,改成strcmp

你這程式邏輯混亂了哦。。。strcmp這個函式是比較的意思,對原來的資料不會進行任何修改的,而且返回值是0和1,你也沒有變數接收返回值。如果沒有理解錯你的意思的話,你應該把if和else下面的函式也改成strcpy

5樓:匿名使用者

拼錯了strcmy ->strcmp

寫了一個c語言程式,執行老是出錯,不知道是**有問題,編譯的時候也沒有錯誤,願大佬幫我解決

6樓:大維

你粘到這上面的程式 不完整! 結構體要先宣告 並且你的第一個元素mark,最好要指定大小!

#include

struct napkin

;void printa(struct napkin *dp);

int main()

void printa(struct napkin *dp)

7樓:琴海情殤

將輸出語句printf("%s\n",dp->mark)改為

C語言編寫程式,執行時出現了這個問題求大神解釋

for i 0 i baiif line i 32 line i 1 32 l j line i 你這裡line可能du要越界喲。line i 1 當zhii取最大值時,不一定有喲dao 下面對l也是一回 樣,明答顯可能會越界的 原因就在於line越界了,l其實也要越界的,不過在後面,沒有他表現的機...

求C語言高手求高手解答這兩條程式執行時的區別

第一個程式中的break語句沒有在if條件判斷的執行語句中,而是在for迴圈中。所以,當執行for迴圈的時候,無論是否滿足if條件判斷,這個break語句就會執行,導致迴圈結束。而第一個的break語句在if條件判斷的執行語句中,所以只有當if條件滿足的時候,也就是當n 9 0的時候才會執行,並且在...

C語言習題求助,編譯通過,執行錯誤,高分求解

由於 c 語言本身的最大特點就是 其不僅是程式設計格式上非常地自由,而且在對其進行編譯時也是非常自由的 編譯器能夠放過去很多它認為不是問題的問題 但自由的同時也給程式設計師帶來了程式除錯和執行上的困難。有些錯誤在編譯的時候是能夠發現的 例如 程式語法錯誤 而有些錯誤在編譯程式的時候卻是不能夠被發現的...