題目編寫一函數,其功能是使輸入的字串反序。並使用迴圈語句進行測試。#include<stdio.h>#include<string.h>charreversed(char *);intmain(void){ chars1[100]; while(scanf("%s", &s1) == 1) printf("%s\n",reversed(s1)); return 0;}charreversed(char *s1){ int i, m =strlen(s1); chars2[100]; for(i = 0;i < m; i++) s2[i] = s1[m- 1 - i]; return s2[0];}建置成功 但出現無法運轉請問是哪裡有問題或是哪裡需要修改 蔡蔡子夫人 ( 5 級 ) 居家百科 | 懷孕 2013-06-04 14:01:31 %s是回傳字元陣列但是reversed你回傳的是s2[0]這代表你只回傳一個字元所以會發生錯誤單純C的話我不知道有沒有回傳字元陣列的函數,但是可以這樣寫char* reversed(char *s1){char s2[100];...return s2;}但是這樣寫有個極大的缺點*是回傳位址,因此這樣寫是回傳s2的位址但是s2是區域變數,因此在return之後s2會被清除,被清除就代表系統隨時都有可能把該位址的值改掉。(專業點的不是講清除,不過意思明白就好)解決方法是在全域變數加一個s3[100]在return之前將s2複製給s3,然後回傳s3char s3[100];char* reversed(char *s1){int i, m =strlen(s1);char s2[100];for(i = 0;i < m; i++)s2[i] = s1[m- 1 - i];s2[m]='\0';strcpy(s3,s2);return s3;}順帶一題s2[m]='\0';這是設定結束字元因為使用迴圈方式一個一個設定值的話compiler不會知道這個字元陣列到哪裡結束,因此要自己設定檢視圖片 網路 s2 i9100,s2機關,s2手機,s2材質,s2 501,s2髮醫,s2鋼材,s2 pro,s2 steel,s2刷機s2,s1,quot,s3,strlen,建置,成功,字元,lt,scanf ( 0 ) | ( 0 ) ( 0 ) 謝謝 [ 其他廠牌 ] s2空機價 [ Samsung ] s2跟s3 推薦一下 [ Samsung ] 三星S2 I9100 [ Windows Phone ] 比較HTC XE跟S2 [ Samsung ] samsung galaxy s2 跟 s2 plus比較 [ Samsung ] s2 i9100 (0) (0) (0)
arrow
arrow
    全站熱搜

    波多野結衣 發表在 痞客邦 留言(0) 人氣()