C語言 哪位高手看下錯那裡

時間 2022-06-04 20:20:05

1樓:匿名使用者

1全部1、首先jiami函式的返回值有問題,你的本意是想返回乙個加密之後的陣列,但是你只是返回了乙個int 值。

2、z 是乙個臨時陣列,該臨時變數儲存在堆疊上,當離開 jiami函式之後,陣列z的所有內容將被彈出堆疊,也就是說陣列z將不可用。

綜上 你需要把陣列z置於 堆上,或者不使用陣列z,直接在傳入的陣列之中進行操作

方案一 :直接修改傳入的陣列的值的方法;

#include

#define k 5

void jiami(char x);

void main()

void jiami(char x)

else if(x[i]>='a'&&x[i]<='z')else tmp=x[i];

x[i++] = tmp;}}

方案二:返回陣列的位址,但要自己管理記憶體分配問題#include

#include

#define k 5

char* jiami(char x);

void main()

char* jiami(char x)

else if(x[i]>='a'&&x[i]<='z')else tmp=x[i];

parray[i++] = tmp;

}return parray;}

2樓:不宜然

char tmp,z[100];

這個在函式裡面是在棧分配記憶體的臨時變數,,你在後面reutn z;則是返回了z的位址,這樣當前於返回臨時變數的位址,是錯誤的用法。

p=jiami(a);

運氣好的話,p還能得到值,還不會錯,但是p指向的記憶體已經釋放,可被其他程式占用。所以,有時候會彈出錯誤,程式崩潰。

3樓:青青牆外草

沒發現什麼問題,除了從指標到int的隱式型別轉換可能會有編譯警告。 你的編譯環境提示什麼錯誤了嗎?

求高手看下C語言不能執行,求高手看下C語言不能執行

涉及到寬字元編碼。給你改了一下 include include include int main 建議初學者先不要在程式中使用中文這樣的寬字元 字元陣列 這樣定義 char str 210 字串比較 用strcmp函式 char str 是字元型別。在下面的 str 陳帥 中 陳帥 是字串,型別不匹...

哪位高手能把這個C語言程式改寫成C 語言的,要用到類,把輸出函式改為cout輸出

includeusing namespace std enum c h s void main 缺少型別說明符 else if won player,machine else case game gamee win,lose,tie break case instructions instruct ...

求C語言高手解答,求C語言高手解答!

好久沒有看高中數學了,都有點忘記了,哈哈。我試著給你寫乙個。float x1,x2 定義全域性變數,這樣主函式就可以直接呼叫了int fun float a,float b,float c else else 沒有驗證,應該差不多。公式上面有點記不清了 這個題目也不難,可以通過幾個途徑來解決 無非就...