※ 本文為 MindOcean 轉寄自 ptt.cc 更新時間: 2017-08-29 20:54:53
看板 Gossiping
作者 標題 Re: [問卦] C程式大神們請進
時間 Sun Aug 27 23:46:44 2017
※ 引述《gash55025502 (白影弓)》之銘言:
: 聽說八卦版們各方面的神人們都很多
: 想必一定也有精通C語言的人
原來八卦板可以拿來討論 C 語言程式設計,太好了。
: 就是阿
支持文言文,這裡幫你改為「嗟夫」
: 輸入一個字串要將他做大小寫轉換
: 轉換是轉換成功了
: 但是後面卻跑出一堆亂碼
: 可以請大神們幫我看看問題出在哪嗎
為了避免變成暑修作業 (?),我提供一份實作,讓你想想,歡迎討論。
檔名: X.c
===從這裡開始===
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
/* Reference:
* http://www.geeksforgeeks.org/ \
GeeksforGeeks | A computer science portal for geeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and ...
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and ...
*/
static const int ascii_x = 32;
/* Lower to Upper Case; Upper to Lower Case */
static inline char *case_swap(char *in) {
for (int i = 0; in[i] != '\0'; i++)
if (isalpha(in[i]))
in[i] ^= ascii_x;
}
#define LEN 50
#define str(x) # x#define xstr(x) str(x)
static char buf[LEN];
int main() {
/* Ensure that there is no buffering for stdin. */
setbuf(stdin, NULL);
/* discard the input stream upto but not including the newline
* character. Extra getchar() is required to consume this.
*/
scanf("%"xstr(LEN)"[^\n]%*[^\n]", buf);
getchar();
/* TODO: error handling such as EOF */
printf("Orig: %s\n", buf);
printf("New: %s\n", case_swap(buf));
return 0;
}
===這裡結束===
以 GNU/Linux 為例,編譯和執行方式如下: (省略開頭的 '$ ')
$ gcc -o X X.c -Wall
$ ./X
參考輸入: abcde (記得按下 Enter)
參考輸出:
Orig: abcde
New: ABCDE
可隨機產生字串來測試程式,方法如下: (省略開頭的 '$ ')
$ (cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1) | ./X
參考輸出:
Orig: MeXKS1VMOi
New: mExks1vmoI
上述程式仍有改進空間,隨意列出:
1. 缺乏對於 EOF 的處理;
2. 程式碼忽略超出 50 個字元 (正確來說還要減去 NULL terminator) 的處理,但可能會跟使用者期望有落差;
3. 考慮到 secure coding (安全可靠的程式設計方式),應該重新包裝 buffered I/O 函式,讓日後重用;
歡迎一起學習 C 語言程式設計: http://hackfoldr.org/dykc/
「會 C、會呼吸」即可「成為電腦的主人」,做自己,好自在。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.113.20
※ 文章代碼(AID): #1Pekbefg (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1503848808.A.A6A.html
推 : 有神快拜1F 08/27 23:47
→ : ......................2F 08/27 23:47
推 : jserv ....3F 08/27 23:47
噓 : Jserv 我來噓一下4F 08/27 23:47
推 : 趕快拜神5F 08/27 23:48
→ : 又來亂搞了.........6F 08/27 23:48
推 : 有神快拜7F 08/27 23:48
→ : ><8F 08/27 23:48
推 : 大神親自下凡來指導啦!!!!!還免學費,原PO真的9F 08/27 23:48
→ : 要好好珍惜阿!!!!!!!!!!!!!!!!!!
→ : 要好好珍惜阿!!!!!!!!!!!!!!!!!!
推 : 媽~~我看到jserv了!11F 08/27 23:49
→ : 還是去學 python 嘻嘻12F 08/27 23:49
推 : 朝聖13F 08/27 23:49
推 : 這釣竿有點強14F 08/27 23:49
推 : 又在浪費才能了.....15F 08/27 23:49
→ : 有神快拜!16F 08/27 23:50
噓 : 看不懂17F 08/27 23:50
推 : 教授?18F 08/27 23:50
→ soga0806 …
→ : ID當然是本人阿..20F 08/27 23:51
→ : 卡21F 08/27 23:51
推 : 朝聖22F 08/27 23:52
推 : 先拜再說了23F 08/27 23:52
噓 : c語言是垃圾 java才是王道24F 08/27 23:52
推 : 有神快拜25F 08/27 23:53
噓 : 是jserv 噓26F 08/27 23:53
推 : 看完以後好暈 不是有簡單的寫法?27F 08/27 23:54
→ : Brabus700G, 對呀,所以趕快來自幹 JVM28F 08/27 23:54
推 : 快拜29F 08/27 23:54
推 : 有神快拜30F 08/27 23:55
推 : 靠杯 是本人 有神快拜31F 08/27 23:56
推 : 拜大神32F 08/27 23:56
推 : 快拜33F 08/27 23:56
推 :34F 08/27 23:58
推 : 有神快拜 <(_ _)>35F 08/27 23:58
推 : 哇靠有神快拜!!!!36F 08/27 23:59
推 : 強者37F 08/27 23:59
推 : 跪著推文38F 08/28 00:00
推 : 朝聖39F 08/28 00:00
推 : 跪著推文40F 08/28 00:01
推 : 有神快拜41F 08/28 00:02
→ : 敬群大大!!!!42F 08/28 00:02
推 : 大大 容許我跪一下嗎43F 08/28 00:02
推 : 朝聖44F 08/28 00:02
推 : 拜神m(_ _)m45F 08/28 00:03
推 : 拜神 普渡一下46F 08/28 00:03
推 : 跪著推47F 08/28 00:05
推 : 有神快拜48F 08/28 00:07
推 : 快拜49F 08/28 00:07
噓 : 來試試看噓神會怎樣50F 08/28 00:08
推 : 朝聖推!51F 08/28 00:08
推 : 跪著推52F 08/28 00:09
推 : 神降臨53F 08/28 00:11
→ : 不過我有個問題想請教老師,(儘管我們不認識),有哪54F 08/28 00:11
推 : 靠杯, 大神回文!55F 08/28 00:11
→ : 些情況會讓程式一開始執行的時候stdin有殘留之前的56F 08/28 00:11
推 : (′‧ω‧‵)57F 08/28 00:11
→ : 輸入呢?如果每支程式都是互相獨立的,那麼這支程式58F 08/28 00:11
推 : 朝聖!!59F 08/28 00:11
→ : 一開始執行的時候應該也不會輸入殘留,所以setbuf其60F 08/28 00:12
→ : 實不必要?
→ : 實不必要?
推 : 有神快拜 <(_ _)>62F 08/28 00:13
推 : 大概是fork出來的??63F 08/28 00:13
推 : 哇靠64F 08/28 00:14
推 : 朝聖65F 08/28 00:14
推 : 成大資工教授 嗯?!66F 08/28 00:15
推 : 雖然看不懂 不過好像好強大67F 08/28 00:15
推 : 快C68F 08/28 00:15
推 : 唉 語法真的不是很人性化就是了 雖然還是得用69F 08/28 00:16
推 : 有理, 假設自幹bash, fork時stdin有可能殘留70F 08/28 00:16
推 : 感謝BoXEX大提點 不過這整支獨立程式應該不會有fork71F 08/28 00:16
→ : 的行為出現?
→ : 的行為出現?
推 : 有神快拜73F 08/28 00:17
推 : 文組推74F 08/28 00:17
推 : 媽別問 我一定要跪著看這篇文75F 08/28 00:17
推 : 大大出現了 @@76F 08/28 00:17
→ : 再者,setbuf是否跟fflush(stdin)等價?77F 08/28 00:18
推 : 神串留名78F 08/28 00:19
推 : ...................................................79F 08/28 00:19
→ : alan23273850, 請考慮 pipe 的使用80F 08/28 00:19
→ : 為了避免直接被拿去當作業,我的程式碼做了一點「加工」
→ : 為了避免直接被拿去當作業,我的程式碼做了一點「加工」
推 : 媽我在這82F 08/28 00:20
推 : in ^= ascii_x; 有點神83F 08/28 00:22
推 : 神人推84F 08/28 00:23
推 : 好85F 08/28 00:25
推 : 第一次知道這種寫法......86F 08/28 00:25
推 : 神人推87F 08/28 00:26
推 : 原本以為是廢文 結果到ID跪了88F 08/28 00:27
推 : 推89F 08/28 00:27
推 : 推,這裡好亂啊,仇X跟專業百花齊放90F 08/28 00:27
推 : 跪了91F 08/28 00:27
推 : 跪著推文92F 08/28 00:27
推 : 拜93F 08/28 00:28
推 : 有神快拜94F 08/28 00:28
推 : 神串留名95F 08/28 00:28
推 : 跪了96F 08/28 00:29
推 : 成大資工王 神之jserv97F 08/28 00:30
推 : 本人98F 08/28 00:31
推 : 有神快拜99F 08/28 00:32
推 : 這寫法有多少人知道啊...100F 08/28 00:32
推 : 神到不敢修神的課101F 08/28 00:32
→ MATSUICHIRO …
推 : 蓋103F 08/28 00:33
推 : 朝聖104F 08/28 00:34
推 : 朝聖!105F 08/28 00:34
推 : 推106F 08/28 00:34
推 : 誰107F 08/28 00:35
推 : 扯108F 08/28 00:35
推 : 潮109F 08/28 00:36
推 : 坦白說 如果作業看到scanf那種寫法 就知道copy的了110F 08/28 00:36
推 : 釣到大魚了....111F 08/28 00:37
推 : 神112F 08/28 00:37
推 : scanf那個正規化大學生用不出來吧113F 08/28 00:37
推 : 我在這裡~~~~^_^114F 08/28 00:38
推 : 好像蠻猛115F 08/28 00:38
推 : 娘子快出來拜神啦116F 08/28 00:38
推 : 這種去專版問可能會把噓的,在這裡竟然吊得到高手,也是很117F 08/28 00:39
→ : 妙
→ : *被
→ : 妙
→ : *被
推 : 先跪120F 08/28 00:39
推 : 我是覺得啦,怎沒人順帶解釋一下原po為何會亂碼??121F 08/28 00:39
推 : 原文底下推文就有講了,哪會沒人解釋。122F 08/28 00:40
→ : 亂碼的原因就是原po把字尾也改掉了。
→ : 亂碼的原因就是原po把字尾也改掉了。
推 : 推124F 08/28 00:41
推 : 導致terminator被洗掉,當然會繼續印下去125F 08/28 00:42
推 : 推126F 08/28 00:42
推 : 朝聖推 老師好127F 08/28 00:43
推 : 朝聖;128F 08/28 00:43
推 : 推129F 08/28 00:43
推 : 老師好130F 08/28 00:44
推 : 原來是這樣,剛剛去爬惹131F 08/28 00:44
推 : 老師好132F 08/28 00:45
推 : 神降臨133F 08/28 00:45
推 : 神 跪了134F 08/28 00:46
推 : 跪跪跪135F 08/28 00:46
推 : 是 jserv 大大 (拜136F 08/28 00:46
推 : 朝聖137F 08/28 00:46
推 : 推138F 08/28 00:47
推 : 朝聖139F 08/28 00:47
推 : wtf140F 08/28 00:49
推 : 朝聖141F 08/28 00:49
推 : 每個compiler不一樣,不見得你用的toolchain就會幫你142F 08/28 00:50
→ : 把mem都清乾淨,我就遇過一開始stack都是髒的。
→ : 把mem都清乾淨,我就遇過一開始stack都是髒的。
推 : 我是跟著鄉民推的144F 08/28 00:51
→ : 朝聖145F 08/28 00:52
推 : 推推~~~>_<146F 08/28 00:54
推 : 站上臥虎藏龍 有些人卻老喜歡戰版友 XD147F 08/28 00:54
推 : 神人推一個148F 08/28 00:55
推 : 我都用 gcc -O3149F 08/28 00:56
推 : 朝聖150F 08/28 00:59
推 : 朝聖151F 08/28 00:59
推 : 朝聖152F 08/28 01:04
推 : 跪153F 08/28 01:06
推 : 沒噓過這ID154F 08/28 01:07
推 : 嗯嗯155F 08/28 01:07
推 : 這學期衝堂選不到課QQ156F 08/28 01:08
推 : 行行好直接幫寫作業吧157F 08/28 01:11
推 : 跪158F 08/28 01:12
推 : 恩恩跟我想的差不多159F 08/28 01:12
推 : 有神先噓160F 08/28 01:14
推 : 推161F 08/28 01:14
推 : 看完只會像操拎呆一樣蛤XD162F 08/28 01:15
推 : 有神快拜163F 08/28 01:15
推 : 文言文都廢掉拿來上這個多好 有意義太多了164F 08/28 01:19
推 : 朝聖165F 08/28 01:20
推 : 我剛還在想 誰啊! 估狗後.....挖賽...隔行隔山啊166F 08/28 01:20
推 : 神來了167F 08/28 01:23
推 : 朝聖168F 08/28 01:23
推 : 這樣也掉的到?169F 08/28 01:25
→ : 釣
→ : 釣
推 : 朝聖推171F 08/28 01:25
推 : 有神快拜172F 08/28 01:25
推 : 大神!! jserv173F 08/28 01:26
推 : 推174F 08/28 01:27
推 : 嘔嘔嘔嘔嘔嘔嘔寫三小啦看不懂啦175F 08/28 01:30
推 : 神串留名176F 08/28 01:31
推 : 推177F 08/28 01:31
推 : 哇嗚178F 08/28 01:31
推 : 大濕可以教我ㄇ179F 08/28 01:33
推 : 有神朝聖180F 08/28 01:35
推 : god181F 08/28 01:36
推 : 這樣拿去交作業助教會看不懂阿!釣到TW C語言第一把交椅182F 08/28 01:39
推 : 谷哥完後 腿怎麼軟了……183F 08/28 01:40
推 : 神184F 08/28 01:43
推 : ....... 我看了什麼185F 08/28 01:46
推 : 色夫186F 08/28 01:46
推 : jserv 大神187F 08/28 01:50
噓 : 幫C++STL QQ188F 08/28 01:51
→ : 然後看到神還是得推
→ : 然後看到神還是得推
推 : ...190F 08/28 01:54
推 : scanf那段跨謀191F 08/28 01:54
推 : 有神朝聖一下!!!192F 08/28 02:01
推 : 大神 朝聖193F 08/28 02:02
推 : 朝聖194F 08/28 02:03
推 : scanf那段只是防抄襲吧XD195F 08/28 02:04
推 : 靠!好神啊!天啊天啊!196F 08/28 02:06
推 : 靠邀 這不是JSERV大大嗎 扯197F 08/28 02:08
推 : 先拜了198F 08/28 02:08
推 : 看不懂先推就對惹199F 08/28 02:10
推 : 有神快拜201F 08/28 02:15
推 : 大神快拜202F 08/28 02:15
推 : 有神快拜203F 08/28 02:15
推 : 反正先跪204F 08/28 02:17
推 : 快拜!不然人家以為我看不懂!205F 08/28 02:18
推 : 狂206F 08/28 02:19
推 : 朝聖207F 08/28 02:22
推 : 哇 娘子快出來看上帝208F 08/28 02:23
推 : 快拜!不然人家以為我看不懂!XDD209F 08/28 02:23
推 : 恩恩~我就是這麼想的...210F 08/28 02:26
推 : 跟著拜就對了211F 08/28 02:29
推 : 誰啊212F 08/28 02:32
推 : 朝聖~213F 08/28 02:37
推 : 這寫法真的第一次看到 跪了......214F 08/28 02:39
推 : 好像是神級人物215F 08/28 02:41
推 : 台灣語言的第一把交椅還不敢快來拜216F 08/28 02:44
推 : 神217F 08/28 02:45
推 : 今天開始學C語言!!!218F 08/28 02:47
推 : 估狗完,跪著回來推219F 08/28 02:50
推 : 跪拜大神220F 08/28 02:50
→ : 是說剛剛經過老師指點之後,又寫了程式跑了一下,的221F 08/28 02:52
→ : 確 pipe 會讓前一階的輸出變成後一階的輸入,但現在
→ : 尷尬的是不論用什麼方法都沒辦法把前一階送進來的
→ : input 洗掉,包括老師的 setbuf ...... 這實在太詭
→ : 異了。如果重複 scanf,就會重複吃前一階送進來的字
→ : 確 pipe 會讓前一階的輸出變成後一階的輸入,但現在
→ : 尷尬的是不論用什麼方法都沒辦法把前一階送進來的
→ : input 洗掉,包括老師的 setbuf ...... 這實在太詭
→ : 異了。如果重複 scanf,就會重複吃前一階送進來的字
推 : 先跪推226F 08/28 02:55
→ : 串,中間印出來之後也不會把 buffer 清空,一整個黑227F 08/28 02:55
→ : 人問號 XD 空前絕後始料未及
→ : 人問號 XD 空前絕後始料未及
推 : 努力學php中229F 08/28 02:56
推 : 大家也不妨串接 pipe 跑跑看,說不定有驚人發現 XD230F 08/28 02:59
→ : 老師的精神真的值得我們學習
→ : 老師的精神真的值得我們學習
推 : 膝蓋好痛232F 08/28 03:01
推 : 朝聖推233F 08/28 03:01
推 : 居然是jserv XD234F 08/28 03:03
→ : alan2327385: 感謝實驗,你需要加 if (feof(stdin)) {...}235F 08/28 03:06
→ : 各位網友,只有作古的人物才會神化,那當然是C語言老爸dmr
→ : dmr = Dennis M. Ritchie, C 語言和 UNIX 共同發明者
→ : 我寫報告搞得失眠,看到有人這麼認真討論,我順手回覆
→ : 希望大家勿輕視buffered I/O背後的學問,絕非「大一就會」
→ : 這可有多變形,細節涉及資訊安全、作業系統,甚至計算理論
→ : (原來不能噓自己/ 我程式寫不好,當然要接受大家批評)
→ : 各位網友,只有作古的人物才會神化,那當然是C語言老爸dmr
→ : dmr = Dennis M. Ritchie, C 語言和 UNIX 共同發明者
→ : 我寫報告搞得失眠,看到有人這麼認真討論,我順手回覆
→ : 希望大家勿輕視buffered I/O背後的學問,絕非「大一就會」
→ : 這可有多變形,細節涉及資訊安全、作業系統,甚至計算理論
→ : (原來不能噓自己/ 我程式寫不好,當然要接受大家批評)
推 : 朝聖!!就從今天起 開始學C語言!!242F 08/28 03:17
推 : 神串留名243F 08/28 03:19
推 : 推245F 08/28 03:28
推 : 網站看起來很強大!246F 08/28 03:32
推 : 釣到神人了247F 08/28 03:48
推 : jserv!!248F 08/28 04:05
推 : 有神!!249F 08/28 04:13
推 : O_O/250F 08/28 04:26
推 : 有神251F 08/28 04:30
推 : 我決定要好好學C語言了 QQ252F 08/28 04:41
推 : 快推 免得被說文組看不懂253F 08/28 04:46
推 : 看到ID就跪了254F 08/28 04:54
→ : 原來可以這樣用define@@ 學了一課255F 08/28 04:58
推 : 朝聖推 大一菜逼八 看不懂256F 08/28 05:02
推 : 我要留名 太神啦257F 08/28 05:02
推 : 從大一學到現在對UNIX都沒什麼接觸,不太懂用commandlin258F 08/28 05:03
→ : e產生random那段
推 : 也看不懂scsnf QQ
→ : *scanf
→ : e產生random那段
推 : 也看不懂scsnf QQ
→ : *scanf
推 : Wow262F 08/28 05:09
推 : 推263F 08/28 05:12
噓 : 文組啦264F 08/28 05:20
推 : 推265F 08/28 05:23
推 : 釣魚釣到大白鯊!266F 08/28 05:34
推 : 宅色夫!267F 08/28 05:41
噓 : 原來是live coding 神,噓一下覺的開心268F 08/28 05:52
推 : 113欸269F 08/28 06:38
推 : 朝聖推270F 08/28 07:16
推 : 朝聖,腿軟了271F 08/28 07:19
推 : 朝聖,跪著看QQ272F 08/28 07:24
推 : 朝聖273F 08/28 07:28
→ : ....................................................274F 08/28 07:34
→ : 朝聖275F 08/28 07:45
推 : 這平凡無奇的餌,兒竟然會中大魚~276F 08/28 07:47
推 : 有神277F 08/28 07:48
推 : Wow278F 08/28 07:48
推 : 看不懂哈哈哈 不過還是跪拜一下279F 08/28 07:52
推 : 推Rrr280F 08/28 07:52
推 : 推 服完役準備進成大 希望能選到教授的課281F 08/28 07:59
推 : 跪282F 08/28 08:16
推 : 猛猛der283F 08/28 08:19
推 : 天啊媽我在這...284F 08/28 08:25
推 : 推285F 08/28 08:27
推 : 這什麼碗糕啊!!? 會C++可以拿來買菜嗎286F 08/28 08:27
推 : 這也能釣到287F 08/28 08:30
推 : 推288F 08/28 08:32
推 : 朝聖289F 08/28 08:32
推 : jserv!!!290F 08/28 08:36
推 : 有神快拜291F 08/28 08:39
噓 : 很神 但在這邊問C真的浪費版面292F 08/28 08:43
推 : 看得懂推個293F 08/28 08:44
推 : 朝聖~已跪294F 08/28 08:46
推 : 朝聖295F 08/28 08:50
推 : 以後可能有類似作業296F 08/28 08:51
→ : 先卡個
→ : 先卡個
推 : 拜一下神298F 08/28 09:00
推 : 支持文言文!299F 08/28 09:04
推 : 最近很多跑錯版的 奇怪300F 08/28 09:05
推 : 老師好301F 08/28 09:06
推 : !!302F 08/28 09:11
推 : 朝聖303F 08/28 09:13
推 : 朝聖304F 08/28 09:23
推 : 朝聖一下305F 08/28 09:33
推 : 卡306F 08/28 09:33
推 : JERV~~~~~307F 08/28 09:34
→ : 現在流行在八卦版問作業?308F 08/28 09:35
推 : 先拜一下309F 08/28 09:35
→ : 為甚麼^=32..310F 08/28 09:39
推 : 朝聖311F 08/28 09:40
推 : 看id膝蓋軟了312F 08/28 09:41
推 : 先推313F 08/28 09:44
推 : 朝聖314F 08/28 09:51
推 : 當你還在研究C怎麼寫 java已經把功能都做好了315F 08/28 10:00
推 : 媽,我在這裡。。。316F 08/28 10:21
推 : 偶像 推317F 08/28 10:28
推 : 有神快拜!318F 08/28 10:31
推 : 有神快拜319F 08/28 10:42
推 : 快推,不然別人以為不會寫程式320F 08/28 10:52
推 : 宅色夫耶,有神快拜!321F 08/28 10:55
推 : 有神快拜322F 08/28 11:01
推 : 啊啊啊啊啊看不懂還是跪下來拜一下323F 08/28 11:05
推 : 快拜324F 08/28 11:19
→ Wand …
→ : 快拜,不然人家以為我們看不懂326F 08/28 11:52
推 : 學會C語言327F 08/28 11:56
推 : 一中學長? 推328F 08/28 12:05
推 : 朝聖329F 08/28 12:11
推 : 因為大小寫相差了 32330F 08/28 12:12
推 : 朝聖331F 08/28 12:46
推 : 跪332F 08/28 12:51
推 : 朝聖333F 08/28 12:52
推 : 跪334F 08/28 13:08
推 : 朝聖推335F 08/28 13:08
推 : 朝聖推336F 08/28 13:43
推 : 有神快拜337F 08/28 13:49
推 : 這餌居然可以釣到神......先跪再說338F 08/28 14:09
推 : 推!339F 08/28 14:14
推 : 推!!340F 08/28 14:54
推 : 太扯了這樣也能請超級大師出來。。。341F 08/28 15:00
推 : \朝聖/342F 08/28 15:02
推 : 朝聖推 //343F 08/28 15:09
推 : 我看了什麼344F 08/28 15:32
推 : C大神345F 08/28 15:41
推 : 朝聖346F 08/28 15:54
推 : 朝聖!有神快拜 m(_ _)m347F 08/28 16:10
推 : 你是在認真什麼啦348F 08/28 16:25
推 : 有神快拜349F 08/28 16:35
推 : 先拜再說 雖然我比較喜歡D350F 08/28 16:52
推 : 八掛能學C 你敢信!!351F 08/28 17:07
→ : 77777777777777352F 08/28 17:33
推 : 朝聖 353F 08/28 17:38
推 : 哇哈哈終於完全弄懂啦!!!花了兩、三小時多。原來354F 08/28 18:47
→ : 我一開始就誤會老師的code了,老師一開始的setbuf其
→ : 實是設定buffer的模式,而不是把之前緩衝區的內容清
→ : 空。那如果是在pipe的情況下,想要直接取pipe傳過來
→ : 的文字,當然要使用while(scanf(...)!=EOF),這跟
→ : online judge一樣,如果不檢查EOF,stdin則會保留最
→ : 後一行文字。簡單來說,scanf吃檔案的時候不管有沒
→ : 有EOF不會停,只有吃鍵盤輸入時才會暫停等使用者輸
→ : 入。那如果在pipe的情況下堅持要吃鍵盤輸入,就只能
→ : 使用freopen了,會把stdin改為鍵盤,並摒棄之前的暫
→ : 存。
→ : 這篇文真der讓我獲益良多RRRRRRRRRRRR
→ : 我一開始就誤會老師的code了,老師一開始的setbuf其
→ : 實是設定buffer的模式,而不是把之前緩衝區的內容清
→ : 空。那如果是在pipe的情況下,想要直接取pipe傳過來
→ : 的文字,當然要使用while(scanf(...)!=EOF),這跟
→ : online judge一樣,如果不檢查EOF,stdin則會保留最
→ : 後一行文字。簡單來說,scanf吃檔案的時候不管有沒
→ : 有EOF不會停,只有吃鍵盤輸入時才會暫停等使用者輸
→ : 入。那如果在pipe的情況下堅持要吃鍵盤輸入,就只能
→ : 使用freopen了,會把stdin改為鍵盤,並摒棄之前的暫
→ : 存。
→ : 這篇文真der讓我獲益良多RRRRRRRRRRRR
推 : jserv 大神出現!!!… <(__ __)>366F 08/28 19:01
推 : 朝聖367F 08/28 19:11
推 : 老師好 身體要顧好368F 08/28 20:23
推 : CCC語言太猛拉 朝聖推369F 08/28 20:27
推 : 不過我後來想一想也蠻有道理的,如果scanf的stdin交370F 08/28 20:36
→ : 給檔案輸入,遇到eof又暫停的話,整支程式就會卡住
→ : 了,難怪要這樣設計。只能說C語言博大精深啊!
→ : 給檔案輸入,遇到eof又暫停的話,整支程式就會卡住
→ : 了,難怪要這樣設計。只能說C語言博大精深啊!
→ : 有神快拜~ 敬群學長好!373F 08/28 21:01
噓 : 借我噓噓看374F 08/28 21:36
推 : 推回來lar375F 08/28 21:42
推 : 你可以自幹一個scanf(誤)376F 08/28 21:49
推 : 文組看不懂朝聖377F 08/29 01:03
推 : 有神快拜378F 08/29 01:42
推 : <(-_-)>379F 08/29 02:28
推 : <>380F 08/29 02:32
推 : 朝聖381F 08/29 03:50
噓 : 借我噓看看382F 08/29 04:00
推 : 神383F 08/29 04:26
推 :384F 08/29 06:41
推 : 太神啦!385F 08/29 09:06
→ : alan23273850: 再次感謝心得分享,方便寫篇短文紀錄嗎?386F 08/29 09:26
→ : 為了避免貼文離題,本文是「有沒有在八卦版學C的八卦?」
→ : 為了避免貼文離題,本文是「有沒有在八卦版學C的八卦?」
推 : 這是C++ 不是C啦388F 08/29 09:28
→ : 承上「有沒有大學課程在八卦版廣告的八卦?」389F 08/29 09:36
→ : (上述課程網頁的瀏覽數量在24小時內增加近4000人次)
→ : (上述課程網頁的瀏覽數量在24小時內增加近4000人次)
推 : 八卦人氣真的高呢391F 08/29 09:51
推 : 神串留名 scanf那邊看不懂 有大大能解釋嗎?392F 08/29 14:30
推 : 推推推推推393F 08/29 14:40
→ : 簡單的說 是為了處理換行字元395F 08/29 19:35
--
作者 jserv 的最新發文:
- 回答這問題之前,我們應該先思考「什麼是 BSD?」 依據 FreeBSD 網站 的描述,FreeBSD 衍生自 BSD,後者則是 "the version of UNIX developed …49F 38推
- 「既然你誠心誠意地發問了,我們就大發慈悲地告訴你」(語出「火箭隊」) 這則笑話在 2010 年就出現巴哈姆特電玩資訊站 ,內容改寫自中國網友的創作, 已有十餘年,不過該笑話的弊端在於「針」。DVD 燒 …499F 407推 3噓
- 我是跟鄉民進來看熱鬧的,我跳進來了,我又跳出去了,打我啊笨蛋! (取自方唐鏡 名言) 學校老師應該忙著開學事宜,我幫他們回覆你的提問。 原題「在 Linux 系統底下要怎麼自己搞 win3.1 呢?」 …101F 83推
- 剛好我需要跟學生解釋為何 Linux 核心原始程式碼的風格規範 中,限制一行至多 80 個字元,其典故跟「打孔卡」(punched card) 有關。 1890 年代,美國人口普查就使用新發明的穿孔卡 …247F 230推
- 這恰好連結台灣特有的 BBS (電子布告欄) 文化及早期 Linux (和 BSD) 文字編輯器的 關聯。也讓我想起一年前過世的陳昇瑋博士,他的舊名是陳寬達,並以 Xshadow 的名號 馳名於早期的 …512F 444推 5噓
點此顯示更多發文記錄
回列表(←)
分享