看板 C_and_CPP 關於我們 聯絡資訊
( *[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
BSpowerx:增加MAXLINE的大小試試? 09/28 00:38
mingcloud:變成WA了 感恩XD 那請問我的懷疑是正確的嗎? 09/28 00:45
BSpowerx:printf記得印到\n就會自動停止,如果buf2有兩個以上\n就 09/28 00:47
mingcloud:所以這種處理感覺還是char by char處理比較好啊... 09/28 00:51
※ 編輯: mingcloud 來自: 61.230.126.56 (09/28 01:03)
tkcn:\0 才會停吧,印個 "hello\nworld\n" 就能驗證了 09/28 11:17
BSpowerx:我指在印%s的狀況下 09/28 12:16
glennchen:用char by char 吧 09/28 14:06
cobrasgo:buf2[y++]='`';<---你真的是要這樣做嗎?y在這裡加1了 09/29 22:25
cobrasgo:buf2[y++]放在buf2[y]之前的用意是? 09/29 22:26