[問題] 囧 compile出錯

看板C_and_CPP作者 (請給我前叉)時間15年前 (2009/05/10 18:40), 編輯推噓9(9010)
留言19則, 10人參與, 最新討論串1/1
#include <stdio.h> #include <stdlib.h> int main() { int cmd,i,tmp; char *ins;//instruction while (scanf("%d ",&cmd)!=EOF&&cmd) { int dice[6]={1,2,3,5,4,6}; for (i=0;i<cmd;i++) { scanf("%s",ins); ...以下省略 程式執行到黃色那行就會出錯,囧 可是我沒寫錯吧?? 簡單的scanf %s 怎麼會錯咧?????? 拜託各位了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.103.45

05/10 18:42, , 1F
沒給他空間?
05/10 18:42, 1F
我本來還有一個寫錯演算法的版本 後來砍掉重寫 剛才按復元去比較 明明就一模一樣 怎麼本來能跑現在不能跑= = ※ 編輯: FrankTrjpp 來自: 114.47.103.45 (05/10 18:43)

05/10 18:43, , 2F
& ?
05/10 18:43, 2F

05/10 18:43, , 3F
你的ins只有一個字元,怎麼接受一串字
05/10 18:43, 3F

05/10 18:44, , 4F
char *ins; 這樣不是宣告字串?
05/10 18:44, 4F

05/10 18:44, , 5F
十誡之三?!
05/10 18:44, 5F

05/10 18:44, , 6F
而且我就算輸入1個字元也還是錯...
05/10 18:44, 6F

05/10 18:44, , 7F
1樓正解,3樓不對
05/10 18:44, 7F

05/10 18:45, , 8F
那我先指到NULL再去initialize這樣會對嗎?
05/10 18:45, 8F
改成char ins[6]就過了... 所以沒用malloc、new之類的就少用char *ptr囉? ※ 編輯: FrankTrjpp 來自: 114.47.103.45 (05/10 18:46)

05/10 19:00, , 9F
你少打了&了…&是傳址運算子,請看洪維恩的書,謝謝。
05/10 19:00, 9F

05/10 19:23, , 10F
我講錯了,應該是原本的char *ins這裡有問題…
05/10 19:23, 10F

05/10 20:49, , 11F
唔@@ 沒看到*
05/10 20:49, 11F

05/10 21:08, , 12F
不是沒用 malloc / new 就要少用 ptr
05/10 21:08, 12F

05/10 21:09, , 13F
重點是你在用 char *ptr; 的 ptr 時, 記得要先指到合法區域
05/10 21:09, 13F

05/10 21:09, , 14F
無論是 malloc 出來的, 還是原本宣告好的都可以
05/10 21:09, 14F
所以我必須先指到NULL嗎@@? ※ 編輯: FrankTrjpp 來自: 114.47.103.45 (05/10 23:03)

05/10 23:08, , 15F
意思是你必須讓ins指向一個合法的空間
05/10 23:08, 15F

05/11 01:24, , 16F
假設這樣子能對..會很怪
05/11 01:24, 16F

05/11 01:25, , 17F
假設使用者輸入夠多的input,大過電腦所有可能的儲存容量
05/11 01:25, 17F

05/11 01:25, , 18F
難不成程式還能跑 XDrz
05/11 01:25, 18F
對不起... 指標的部分我很弱... 可是char *argv[] 也沒有指定空間啊... 還是argv是內建變數名稱所以可以這樣用? 我看很多範例程式碼都會用char *string 來存字串呢@@ 看了置底範例 我覺得... 那就直接用string[10]來存就好了嘛,囧 陣列無敵(誤 ※ 編輯: FrankTrjpp 來自: 114.47.103.45 (05/11 02:43)

05/11 03:25, , 19F
因為傳給argv*[]的那塊空間沒看見
05/11 03:25, 19F
文章代碼(AID): #1A1gyRu_ (C_and_CPP)