[問題] fgetc的讀檔問題

看板C_and_CPP作者 (琳琳)時間12年前 (2013/04/01 23:22), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) cygwin 問題(Question): 最近用fgetc()做讀檔 但是判斷讀入字元的時候發生很詭異的結果, 所以上來求助>"< 用下面的程式表達我的問題 程式碼(Code):(請善用置底文網頁, 記得排版) #include<stdio.h> int main(){ FILE *text; //texr為檔案指標 char c; text=fopen("test.java","r"); for(c=fgetc(text); !feof(text) ; c=fgetc(text)){ if(c =='\n') printf("2\n"); else printf("%c",c); } fclose(text); return 0; } 補充說明(Supplement): 輸入的資料test.java aaaaaa bbbbbb cccccc 但是結果會變成 2aaaaa 2bbbbb cccccc 為什麼每行的開頭會和\n相等, 而且只要2出現後面不是一定接著要換行嗎? 有請板友解答T_T -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.197.223

04/01 23:49, , 1F
不確定跟\r有沒有關係 ?
04/01 23:49, 1F

04/02 00:09, , 2F
查了一下是說微軟的文件後面會用/r/n 這樣是代表兩個字
04/02 00:09, 2F

04/02 00:11, , 3F
阿 我懂了
04/02 00:11, 3F

04/02 00:12, , 4F
/r是把引號換到第一個字元 所以2會取代第一個a 然後換行
04/02 00:12, 4F

04/02 00:13, , 5F
謝謝一樓QQ 我爛費了六個小時(蹲
04/02 00:13, 5F

04/02 00:24, , 6F
現在你以為是浪費, 以後你還會浪費時間在同樣的問題上
04/02 00:24, 6F

04/02 00:26, , 7F
一開始就該把 isprint() 跟 iscntrl() 能處理的字分開
04/02 00:26, 7F

04/02 00:26, , 8F
處理, 對於後者, 有些字"印出來"這行為並不是你想要的
04/02 00:26, 8F

04/02 01:57, , 9F
恩恩 也謝謝六樓 我嘗試看看加這個判斷
04/02 01:57, 9F
文章代碼(AID): #1HMQO_8N (C_and_CPP)