作者mingcloud (逆宇)
看板C_and_CPP
標題[ACM] 272 runtime error
時間Tue Sep 28 00:37:01 2010
( *[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