[問題] 二微陣列

看板C_and_CPP作者 (鴨子)時間15年前 (2010/06/23 00:28), 編輯推噓5(5026)
留言31則, 6人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 只能顛倒指定字數的值 希望得到的正確結果: 可以顛倒任意數 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) #include<stdio.h> #include<stdlib.h> int main() { char a[6],head[6],tail[6],b; int i,j; printf("input>>>>"); scanf("%s",a); for(i=0;i<6;i++) { head[i]=a[i]; tail[i]=a[i]; } for(i=0;i<=6;i++) { b=head[i]; head[i]=tail[5-i]; tail[5-i]=b; } printf("reverse>>%s\n",head); system("pause"); return 0; } 補充說明: 像我打這樣 我就只能輸入6個值 多的話後面會捨去 少的話會沒有答案 那我要增加甚麼 才可以使他 輸入任意直都可以轉換順序? 謝謝m(_ _)m 我的構想是 有沒有指令可以得知我scanf裡面有多少字元? 有辦法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.25.118.165

06/23 00:30, , 1F
還以為是雙重微分或積分XDD
06/23 00:30, 1F

06/23 00:31, , 2F
char *a;
06/23 00:31, 2F

06/23 00:31, , 3F
strlen
06/23 00:31, 3F

06/23 00:34, , 4F
strlen 我們沒有交 不能用QAQ
06/23 00:34, 4F

06/23 00:34, , 5F
助教規定不能用?
06/23 00:34, 5F

06/23 00:36, , 6F
沒有教 我也不會..
06/23 00:36, 6F

06/23 00:36, , 7F
先搞清楚沒有教的東西是不能用, 還是只是單純你不會,
06/23 00:36, 7F

06/23 00:37, , 8F
學程式沒有什麼東西都要人家教好才能寫的, 不會的東西,
06/23 00:37, 8F

06/23 00:37, , 9F
要嘛自己查出來怎麼用, 要嘛就是自己寫一個出來用;
06/23 00:37, 9F

06/23 00:37, , 10F
strlen 我不會 char *a;這是幹嘛?
06/23 00:37, 10F

06/23 00:38, , 11F
要是strlen真的不能用, 你就要在倒轉之前先加一小段程
06/23 00:38, 11F

06/23 00:38, , 12F
我知道 可是沒教的規定是不能用 況且 我也不會:(
06/23 00:38, 12F

06/23 00:38, , 13F
式, 來判斷你從scanf讀進來的字串有多長.
06/23 00:38, 13F

06/23 00:41, , 14F
規定不能用的東西是一回事, 但是你不會能不能自己學會
06/23 00:41, 14F

06/23 00:42, , 15F
或查出來是另一回事. 自己寫的方法上面推了, 怎麼查嘛,
06/23 00:42, 15F

06/23 00:42, , 16F
06/23 00:42, 16F

06/23 00:42, , 17F
會學阿 但我們課本裡完全沒提到 要等暑假才會看更多吧
06/23 00:42, 17F

06/23 00:44, , 18F
strlen 這真的沒有我們只有學C 但有sizeof 謝謝:)
06/23 00:44, 18F

06/23 00:47, , 19F
strlen是C的標準函式,如果不行用只好跑個迴圈一個個數
06/23 00:47, 19F

06/23 00:47, , 20F
C語言的字串最後是以'\0'標示結束
06/23 00:47, 20F

06/23 00:48, , 21F
/0我知道 可是我要怎麼寫迴圈得知 值的大小?
06/23 00:48, 21F

06/23 00:50, , 22F
跑迴圈從a[0]判斷到a[5], 遇到'\0'就break, 就能算出字
06/23 00:50, 22F

06/23 00:51, , 23F
串長度. 前題是不會輸入超過5個字, 因為a只開了char [6]
06/23 00:51, 23F

06/23 00:53, , 24F
所以我可以令a[很大] 然後跑迴圈 得知停止值 在令
06/23 00:53, 24F

06/23 00:53, , 25F
head[],tail[]這樣嗎
06/23 00:53, 25F

06/23 00:57, , 26F
如果你懂malloc/free(動態配置), 或開發環境支援VLA, 就
06/23 00:57, 26F

06/23 00:58, , 27F
可以; 如果不能用, 直接把head/tail都開很大比較省事,
06/23 00:58, 27F

06/23 00:59, , 28F
反正迴圈的要跑6跑很大還是跑算出來的停止值都行.
06/23 00:59, 28F

06/23 01:00, , 29F
另外, 如果你會寫swap array裡的兩個值, 甚至head/tail
06/23 01:00, 29F

06/23 01:00, , 30F
都不需要開, 直接用輸入用的a[]來做完倒轉就行了.
06/23 01:00, 30F

06/23 13:03, , 31F
一直做getchar()
06/23 13:03, 31F
文章代碼(AID): #1C8EIaqk (C_and_CPP)