作者FrankTrjpp (請給我前叉)
看板C_and_CPP
標題[問題] 囧 compile出錯
時間Sun May 10 18:40:26 2009
#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
1F:推 QQting:沒給他空間? 05/10 18:42
我本來還有一個寫錯演算法的版本
後來砍掉重寫
剛才按復元去比較 明明就一模一樣
怎麼本來能跑現在不能跑= =
※ 編輯: FrankTrjpp 來自: 114.47.103.45 (05/10 18:43)
2F:→ liu2007:& ? 05/10 18:43
3F:推 BSpowerx:你的ins只有一個字元,怎麼接受一串字 05/10 18:43
4F:→ FrankTrjpp:char *ins; 這樣不是宣告字串? 05/10 18:44
5F:→ bleed1979:十誡之三?! 05/10 18:44
6F:→ FrankTrjpp:而且我就算輸入1個字元也還是錯... 05/10 18:44
7F:推 phstudy:1樓正解,3樓不對 05/10 18:44
8F:→ FrankTrjpp:那我先指到NULL再去initialize這樣會對嗎? 05/10 18:45
改成char ins[6]就過了...
所以沒用malloc、new之類的就少用char *ptr囉?
※ 編輯: FrankTrjpp 來自: 114.47.103.45 (05/10 18:46)
9F:推 dante5323:你少打了&了…&是傳址運算子,請看洪維恩的書,謝謝。 05/10 19:00
10F:推 dante5323:我講錯了,應該是原本的char *ins這裡有問題… 05/10 19:23
11F:推 BSpowerx:唔@@ 沒看到* 05/10 20:49
12F:推 ledia:不是沒用 malloc / new 就要少用 ptr 05/10 21:08
13F:→ ledia:重點是你在用 char *ptr; 的 ptr 時, 記得要先指到合法區域 05/10 21:09
14F:→ ledia:無論是 malloc 出來的, 還是原本宣告好的都可以 05/10 21:09
所以我必須先指到NULL嗎@@?
※ 編輯: FrankTrjpp 來自: 114.47.103.45 (05/10 23:03)
15F:→ sunneo:意思是你必須讓ins指向一個合法的空間 05/10 23:08
16F:推 plover:假設這樣子能對..會很怪 05/11 01:24
17F:→ plover:假設使用者輸入夠多的input,大過電腦所有可能的儲存容量 05/11 01:25
18F:→ plover:難不成程式還能跑 XDrz 05/11 01:25
對不起...
指標的部分我很弱...
可是char *argv[] 也沒有指定空間啊...
還是argv是內建變數名稱所以可以這樣用?
我看很多範例程式碼都會用char *string 來存字串呢@@
看了置底範例
我覺得...
那就直接用string[10]來存就好了嘛,囧
陣列無敵(誤
※ 編輯: FrankTrjpp 來自: 114.47.103.45 (05/11 02:43)
19F:推 sunneo:因為傳給argv*[]的那塊空間沒看見 05/11 03:25