char* fun(char *s) {
char buffer[50];
int i=0;
while(*s){
if(isdigit(*s)){
buffer[i++]=*s;
}
s++;
}
buffer[i]='\0';
return buffer;
}
int main(){
char *s="o34";
char *p="off";
p=fun(s);
while(*p){
printf("%c",p);
p++;
}
//printf("%s",fun(&s[0]));
//puts(fun(s));
getchar();
}
0
A
回答
0
聲明爲靜態,除去短期問題的緩衝區,但調用函數第二次,第一參考將不再後有舊的內容 - 它仍然會指向緩衝區的新內容。
2
兩個問題:
- 你是返回一個指針 字符數組是當地到 功能。
- 在
printf("%c",p);
應該*p
0
一個直接的問題,我看到的是,你從樂趣返回一個臨時緩衝區。這會導致未定義的行爲。最好將緩衝區傳遞給函數或使用一些堆分配(並且不要忘記稍後將其釋放)。
0
你返回本地陣列地址:
char* fun(char *s){
char buffer[50];
...
return buffer;
}
相關問題
- 1. 爲什麼此代碼打印出「0」
- 2. 爲什麼我的字符串輸出打印出奇怪的字符?
- 3. 爲什麼 'setprofile' 打印此
- 4. 爲什麼打印輸出不爲空?
- 5. 只輸出打印字符串中的數字作爲輸入
- 6. 此腳本爲什麼只打印最多32個字符?
- 7. Java-爲什麼它打印出null?
- 8. 正在打印此輸出爲什麼,顯得格格不入
- 9. 此代碼打印什麼?爲什麼?
- 10. 爲什麼輸出打印兩次?
- 11. 爲什麼我打印3次輸出?
- 12. 爲什麼輸出打印JdbcOdbcConnection
- 13. 爲什麼C打印輸出較遲?
- 14. 爲什麼輸出不打印列表?
- 15. Python 2.7.2,Cygwin,raw_input:爲什麼它只在給出輸入後纔打印提示?
- 16. 爲什麼`ipython foo.py bar.py`只打印`foo.py`的輸出?
- 17. 爲什麼打印「\\」只打印出一個反斜槓?
- 18. 這個C程序爲什麼在輸出中打印奇怪的字符?
- 19. 印刷關聯數組 - 怪異輸出
- 20. 它爲什麼打印整數
- 21. 爲什麼我的程序打印出奇怪的數組值?
- 22. 爲什麼打印出spospo?
- 23. 爲什麼這個數組只打印最後一個數字?
- 24. 爲什麼打印一個壓縮的int怪異的OS X?
- 25. 打印出我的letterList數組時,爲什麼我的程序跳過數字?它僅打印出AZ和AZ
- 26. 爲什麼此代碼不打印「20」?
- 27. 此代碼不打印。爲什麼?
- 28. 此代碼爲什麼打印地址?
- 29. 爲什麼此代碼不打印?
- 30. 爲什麼此代碼打印兩次?
該程序看起來不會很快輸出「很奇怪」。它輸出了什麼? – BoltClock 2010-10-19 15:40:07
投票結束,這裏沒有真正的問題。 – 2010-10-19 15:40:20
這是縮進問題。 – 2010-10-19 15:46:11