[ACM] 272 runtime error

看板C_and_CPP作者 (逆宇)時間15年前 (2010/09/28 00:37), 編輯推噓4(405)
留言9則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 題號: 272 遇到的問題: Run time error 小弟不才 簡單的題目寫了很久還是過不了 所以想上來問問是不是自己觀念哪邊有問題 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXLINE 4096 int main(){ char buf1[MAXLINE]; char buf2[MAXLINE]; int i=0; int x,y; int flag =0; while((buf1[i]=getchar())!=EOF) i++; for(x=0,y=0; x<=i; x++,y++) { if(buf1[x]=='"'&&flag ==0){ buf2[y++]='`'; buf2[y]='`'; flag =1 ; }else if (buf1[x]=='"'&&flag ==1){ buf2[y++]='\'' ; buf2[y]='\''; flag =0 ; }else{ buf2[y]= buf1[x]; } } buf2[y] = '\0'; //printf("%s",buf2); while(puts(buf2)!=NULL) ; return 0; } 補充說明: 有點在懷疑是不是 printf 只能印到 \n 不能印到\0 但是如果是這樣的話 應該會是WA才是 而且自己用freopen跑的結果是對的 想了很久還是不清楚 請板上大大指導一番 現在改成這樣變成 runtime error了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.126.56

09/28 00:38, , 1F
增加MAXLINE的大小試試?
09/28 00:38, 1F

09/28 00:45, , 2F
變成WA了 感恩XD 那請問我的懷疑是正確的嗎?
09/28 00:45, 2F

09/28 00:47, , 3F
printf記得印到\n就會自動停止,如果buf2有兩個以上\n就
09/28 00:47, 3F

09/28 00:51, , 4F
所以這種處理感覺還是char by char處理比較好啊...
09/28 00:51, 4F
※ 編輯: mingcloud 來自: 61.230.126.56 (09/28 01:03)

09/28 11:17, , 5F
\0 才會停吧,印個 "hello\nworld\n" 就能驗證了
09/28 11:17, 5F

09/28 12:16, , 6F
我指在印%s的狀況下
09/28 12:16, 6F

09/28 14:06, , 7F
用char by char 吧
09/28 14:06, 7F

09/29 22:25, , 8F
buf2[y++]='`';<---你真的是要這樣做嗎?y在這裡加1了
09/29 22:25, 8F

09/29 22:26, , 9F
buf2[y++]放在buf2[y]之前的用意是?
09/29 22:26, 9F
文章代碼(AID): #1CeCWlj2 (C_and_CPP)