[問題] 請問一下這段程式的bug?(bubble sort)

看板C_and_CPP作者 (安格拉)時間14年前 (2010/03/28 00:49), 編輯推噓5(5014)
留言19則, 8人參與, 最新討論串1/1
我是用C寫的 #include<stdio.h> #include<string.h> #include<stdlib.h> int main(int args,char *arg[]) { FILE *input = fopen(arg[1],"r"); FILE *output = fopen(arg[2],"w"); int total; int i,j,temp; char num[31]; fscanf(input,"%d ",&total); for(i=0;i<total;i++){ fscanf(input,"%d ",&num[i]); } for(i=0;i<total;i++){ for(j=0;j<total-1;j++){ if(num[j]>num[j+1]){ temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } for(i=0;i<total;i++){ fprintf(output,"%d ",num[i]); } fclose(input); fclose(output); return 0; } 就是我先建了一個input.txt的檔案 內容可能是這樣 4 1 7 8 2 (有四項,把這四項做bubble sort) 可是卻無法執行成功 請教一下高手@@ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.220.133

03/28 00:55, , 1F
char num[31]; => int num[31]; // 型態要match你的%d
03/28 00:55, 1F

03/28 03:50, , 2F
改了還是不能..
03/28 03:50, 2F

03/28 10:46, , 3F
fscanf一次會讀一整行 你這code只讀到了1 其他都是空的
03/28 10:46, 3F

03/28 11:01, , 4F
我測可以耶 你是不能執行還是執行結果錯誤
03/28 11:01, 4F

03/28 11:31, , 5F
fscanf什麼時候會一次讀一行了?? 要它無視' '或','等分
03/28 11:31, 5F

03/28 11:31, , 6F
隔符號不中斷小弟我還不太會只會用fgets勒....@_@"
03/28 11:31, 6F

03/28 11:34, , 7F
無法執行/不能 是什麼情形?? 請把實際的狀況描述清楚~_~
03/28 11:34, 7F

03/28 11:35, , 8F
XD 記錯了 拍謝
03/28 11:35, 8F

03/28 11:55, , 9F
不過這樣就看不太出來問題了, 莫非檔案沒開成功@_@"
03/28 11:55, 9F

03/28 16:38, , 10F
compile是沒問題,但是run的時候出現我的exe擋已經停止運作
03/28 16:38, 10F

03/28 16:39, , 11F
的視窗,然後就關掉了
03/28 16:39, 11F

03/28 21:11, , 12F
因為程式一瞬間就跑完了吧 檢查一下你的檔案有沒有出現吧
03/28 21:11, 12F

03/28 21:12, , 13F
另外可以再加一行if(input==NULL)...檢查的好習慣
03/28 21:12, 13F

03/28 22:49, , 14F
output上面也沒有印出來@@
03/28 22:49, 14F

03/29 08:56, , 15F
問個很笨的問題 ... 你是直接在 IDE下 run 嗎? 有設參數?
03/29 08:56, 15F

03/29 15:42, , 16F
程式碼貼成這樣的型式,讓瀏覽的人們看得也很辛苦。
03/29 15:42, 16F

03/30 20:16, , 17F
FILE *input = fopen("input.txt","r");
03/30 20:16, 17F

03/30 20:16, , 18F
FILE *output = fopen("output.txt","w");
03/30 20:16, 18F

03/30 20:19, , 19F
是因為沒指定檔名嗎@@? 我也想知道問題在哪
03/30 20:19, 19F
文章代碼(AID): #1BhZS7q0 (C_and_CPP)