顯示廣告
隱藏 ✕
※ 本文為 MindOcean 轉寄自 ptt.cc 更新時間: 2017-08-29 20:54:53
看板 Gossiping
作者 jserv (松鼠)
標題 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  ...

 
 * case-conversion-lower-upper-vice-versa-string-using-bitwise-operators-cc/
 */
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;
    return in;
}

#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
jhjhs33504: 有神快拜1F 08/27 23:47
Refauth: ......................2F 08/27 23:47
eris231: jserv ....3F 08/27 23:47
HateAnus: Jserv 我來噓一下4F 08/27 23:47
sky791127: 趕快拜神5F 08/27 23:48
Refauth: 又來亂搞了.........6F 08/27 23:48
Merkle: 有神快拜7F 08/27 23:48
asd2260123: ><8F 08/27 23:48
alan23273850: 大神親自下凡來指導啦!!!!!還免學費,原PO真的9F 08/27 23:48
alan23273850: 要好好珍惜阿!!!!!!!!!!!!!!!!!!
isa: 媽~~我看到jserv了!11F 08/27 23:49
s860134: 還是去學 python 嘻嘻12F 08/27 23:49
deepdish: 朝聖13F 08/27 23:49
skyabsence: 這釣竿有點強14F 08/27 23:49
Archier: 又在浪費才能了.....15F 08/27 23:49
isa: 有神快拜!16F 08/27 23:50
knowledge56: 看不懂17F 08/27 23:50
franklin1997: 教授?18F 08/27 23:50
soga0806: 傻眼 你是本人嗎?19F 08/27 23:50
s860134: ID當然是本人阿..20F 08/27 23:51
hsnuonly: 卡21F 08/27 23:51
Morphee: 朝聖22F 08/27 23:52
deathrow: 先拜再說了23F 08/27 23:52
Brabus700G: c語言是垃圾 java才是王道24F 08/27 23:52
kokobom: 有神快拜25F 08/27 23:53
DarkIllusion: 是jserv 噓26F 08/27 23:53
XXXXSHIT: 看完以後好暈 不是有簡單的寫法?27F 08/27 23:54
jserv: Brabus700G, 對呀,所以趕快來自幹 JVM28F 08/27 23:54
newtoeic900: 快拜29F 08/27 23:54
JJ1622: 有神快拜30F 08/27 23:55
ycix: 靠杯 是本人 有神快拜31F 08/27 23:56
Schnucki: 拜大神32F 08/27 23:56
pig250907: 快拜33F 08/27 23:56
gnilot:34F 08/27 23:58
songsongboy: 有神快拜 <(_ _)>35F 08/27 23:58
CowBaoGan: 哇靠有神快拜!!!!36F 08/27 23:59
assassinzero: 強者37F 08/27 23:59
wate5566: 跪著推文38F 08/28 00:00
megah321: 朝聖39F 08/28 00:00
g5637128: 跪著推文40F 08/28 00:01
freeblizzard: 有神快拜41F 08/28 00:02
mvpdirk712: 敬群大大!!!!42F 08/28 00:02
KNVSEOC: 大大 容許我跪一下嗎43F 08/28 00:02
tttrrr: 朝聖44F 08/28 00:02
ian90911: 拜神m(_ _)m45F 08/28 00:03
dexdey: 拜神 普渡一下46F 08/28 00:03
Ardt4113C: 跪著推47F 08/28 00:05
codyairiisa: 有神快拜48F 08/28 00:07
rockyao: 快拜49F 08/28 00:07
OrzXXXqoo: 來試試看噓神會怎樣50F 08/28 00:08
zeropicher: 朝聖推!51F 08/28 00:08
penolove: 跪著推52F 08/28 00:09
tanby: 神降臨53F 08/28 00:11
alan23273850: 不過我有個問題想請教老師,(儘管我們不認識),有哪54F 08/28 00:11
stiles: 靠杯, 大神回文!55F 08/28 00:11
alan23273850: 些情況會讓程式一開始執行的時候stdin有殘留之前的56F 08/28 00:11
dichenfong: (′‧ω‧‵)57F 08/28 00:11
alan23273850: 輸入呢?如果每支程式都是互相獨立的,那麼這支程式58F 08/28 00:11
xu3ru8vmp: 朝聖!!59F 08/28 00:11
alan23273850: 一開始執行的時候應該也不會輸入殘留,所以setbuf其60F 08/28 00:12
alan23273850: 實不必要?
olctw: 有神快拜 <(_ _)>62F 08/28 00:13
BoXeX: 大概是fork出來的??63F 08/28 00:13
oiu850714: 哇靠64F 08/28 00:14
winstonuno: 朝聖65F 08/28 00:14
maxian30201: 成大資工教授 嗯?!66F 08/28 00:15
silentence: 雖然看不懂  不過好像好強大67F 08/28 00:15
koehie: 快C68F 08/28 00:15
Argos: 唉 語法真的不是很人性化就是了 雖然還是得用69F 08/28 00:16
penolove: 有理, 假設自幹bash, fork時stdin有可能殘留70F 08/28 00:16
alan23273850: 感謝BoXEX大提點 不過這整支獨立程式應該不會有fork71F 08/28 00:16
alan23273850: 的行為出現?
tomsawyer: 有神快拜73F 08/28 00:17
s93802: 文組推74F 08/28 00:17
hw102050: 媽別問 我一定要跪著看這篇文75F 08/28 00:17
compuworld: 大大出現了 @@76F 08/28 00:17
alan23273850: 再者,setbuf是否跟fflush(stdin)等價?77F 08/28 00:18
ahahahahah: 神串留名78F 08/28 00:19
fransice7: ...................................................79F 08/28 00:19
jserv: alan23273850, 請考慮 pipe 的使用80F 08/28 00:19
jserv: 為了避免直接被拿去當作業,我的程式碼做了一點「加工」
jaid: 媽我在這82F 08/28 00:20
opthr1215: in ^= ascii_x; 有點神83F 08/28 00:22
qDaniel: 神人推84F 08/28 00:23
saint01: 好85F 08/28 00:25
opthr1215: 第一次知道這種寫法......86F 08/28 00:25
loet: 神人推87F 08/28 00:26
vi000246: 原本以為是廢文 結果到ID跪了88F 08/28 00:27
bruce8104: 推89F 08/28 00:27
meimei2016: 推,這裡好亂啊,仇X跟專業百花齊放90F 08/28 00:27
Daichiuri: 跪了91F 08/28 00:27
Raymond0710: 跪著推文92F 08/28 00:27
DrD: 拜93F 08/28 00:28
heary: 有神快拜94F 08/28 00:28
knaw: 神串留名95F 08/28 00:28
GuGuLu: 跪了96F 08/28 00:29
goodlay5566: 成大資工王 神之jserv97F 08/28 00:30
stonecold114: 本人98F 08/28 00:31
apologize104: 有神快拜99F 08/28 00:32
JameC: 這寫法有多少人知道啊...100F 08/28 00:32
CJROCK: 神到不敢修神的課101F 08/28 00:32
MATSUICHIRO: 推102F 08/28 00:33
kiminocodo: 蓋103F 08/28 00:33
leocean9816: 朝聖104F 08/28 00:34
eddie84567: 朝聖!105F 08/28 00:34
zzzz8931: 推106F 08/28 00:34
cholee08: 誰107F 08/28 00:35
Aspettare: 扯108F 08/28 00:35
suPerFlyK: 潮109F 08/28 00:36
a5480277: 坦白說 如果作業看到scanf那種寫法 就知道copy的了110F 08/28 00:36
Marssa: 釣到大魚了....111F 08/28 00:37
shaxishagym: 神112F 08/28 00:37
yongb: scanf那個正規化大學生用不出來吧113F 08/28 00:37
Leony: 我在這裡~~~~^_^114F 08/28 00:38
Remedy: 好像蠻猛115F 08/28 00:38
wkunhui: 娘子快出來拜神啦116F 08/28 00:38
JameC: 這種去專版問可能會把噓的,在這裡竟然吊得到高手,也是很117F 08/28 00:39
JameC: 妙
JameC: *被
bala73: 先跪120F 08/28 00:39
yongb: 我是覺得啦,怎沒人順帶解釋一下原po為何會亂碼??121F 08/28 00:39
opthr1215: 原文底下推文就有講了,哪會沒人解釋。122F 08/28 00:40
opthr1215: 亂碼的原因就是原po把字尾也改掉了。
fone5566: 推124F 08/28 00:41
alan23273850: 導致terminator被洗掉,當然會繼續印下去125F 08/28 00:42
oaoa0123: 推126F 08/28 00:42
ayueh: 朝聖推 老師好127F 08/28 00:43
NaiveRed: 朝聖;128F 08/28 00:43
tyr2004: 推129F 08/28 00:43
boring5566: 老師好130F 08/28 00:44
yongb: 原來是這樣,剛剛去爬惹131F 08/28 00:44
yellowlin: 老師好132F 08/28 00:45
dapple: 神降臨133F 08/28 00:45
s25g5d4: 神 跪了134F 08/28 00:46
willyc20: 跪跪跪135F 08/28 00:46
Assisi: 是 jserv 大大 (拜136F 08/28 00:46
SHIU0315: 朝聖137F 08/28 00:46
ploveh: 推138F 08/28 00:47
shiwa: 朝聖139F 08/28 00:47
h11103: wtf140F 08/28 00:49
qweasd777: 朝聖141F 08/28 00:49
NewPassat: 每個compiler不一樣,不見得你用的toolchain就會幫你142F 08/28 00:50
NewPassat: 把mem都清乾淨,我就遇過一開始stack都是髒的。
jerrysuper: 我是跟著鄉民推的144F 08/28 00:51
hagousla: 朝聖145F 08/28 00:52
mia3: 推推~~~>_<146F 08/28 00:54
bloodruru: 站上臥虎藏龍 有些人卻老喜歡戰版友 XD147F 08/28 00:54
chia7712: 神人推一個148F 08/28 00:55
TUTOTO: 我都用 gcc -O3149F 08/28 00:56
idiotleo: 朝聖150F 08/28 00:59
wtchen: 朝聖151F 08/28 00:59
staristic: 朝聖152F 08/28 01:04
tim0922: 跪153F 08/28 01:06
SilverFox: 沒噓過這ID154F 08/28 01:07
maxmaster: 嗯嗯155F 08/28 01:07
kig88: 這學期衝堂選不到課QQ156F 08/28 01:08
hellomen: 行行好直接幫寫作業吧157F 08/28 01:11
yoyo930021: 跪158F 08/28 01:12
appleonatree: 恩恩跟我想的差不多159F 08/28 01:12
weboau: 有神先噓160F 08/28 01:14
scottliu: 推161F 08/28 01:14
einejack: 看完只會像操拎呆一樣蛤XD162F 08/28 01:15
yuu101: 有神快拜163F 08/28 01:15
Everforest: 文言文都廢掉拿來上這個多好 有意義太多了164F 08/28 01:19
jeneaqa1: 朝聖165F 08/28 01:20
aphrodite98: 我剛還在想 誰啊!  估狗後.....挖賽...隔行隔山啊166F 08/28 01:20
attis: 神來了167F 08/28 01:23
aggress5566: 朝聖168F 08/28 01:23
gammablue: 這樣也掉的到?169F 08/28 01:25
gammablue: 釣
Shibaba: 朝聖推171F 08/28 01:25
freezesword: 有神快拜172F 08/28 01:25
TheWho: 大神!! jserv173F 08/28 01:26
muserFW: 推174F 08/28 01:27
dustsstar79: 嘔嘔嘔嘔嘔嘔嘔寫三小啦看不懂啦175F 08/28 01:30
iamtu: 神串留名176F 08/28 01:31
aster111598: 推177F 08/28 01:31
TitanEric: 哇嗚178F 08/28 01:31
pokemon1318: 大濕可以教我ㄇ179F 08/28 01:33
gg068187: 有神朝聖180F 08/28 01:35
nova06091: god181F 08/28 01:36
ChoDino: 這樣拿去交作業助教會看不懂阿!釣到TW C語言第一把交椅182F 08/28 01:39
bvcde33wq: 谷哥完後 腿怎麼軟了……183F 08/28 01:40
letitflame: 神184F 08/28 01:43
starlight102: ....... 我看了什麼185F 08/28 01:46
aqrt66558: 色夫186F 08/28 01:46
tom83615: jserv 大神187F 08/28 01:50
dzwei: 幫C++STL QQ188F 08/28 01:51
dzwei: 然後看到神還是得推
kurama0722: ...190F 08/28 01:54
hank821017: scanf那段跨謀191F 08/28 01:54
bbo6uis122: 有神朝聖一下!!!192F 08/28 02:01
windy619: 大神 朝聖193F 08/28 02:02
banaret: 朝聖194F 08/28 02:03
opthr1215: scanf那段只是防抄襲吧XD195F 08/28 02:04
rehtra: 靠!好神啊!天啊天啊!196F 08/28 02:06
saiulbb: 靠邀 這不是JSERV大大嗎 扯197F 08/28 02:08
Thanksbro: 先拜了198F 08/28 02:08
calvin0319: 看不懂先推就對惹199F 08/28 02:10
[圖]
 
david50407: 有神快拜201F 08/28 02:15
enjoyloli: 大神快拜202F 08/28 02:15
wei115: 有神快拜203F 08/28 02:15
leew633: 反正先跪204F 08/28 02:17
gloria30037: 快拜!不然人家以為我看不懂!205F 08/28 02:18
yuinghoooo: 狂206F 08/28 02:19
Hoshiwa: 朝聖207F 08/28 02:22
lpoijk: 哇 娘子快出來看上帝208F 08/28 02:23
xunhuiwu: 快拜!不然人家以為我看不懂!XDD209F 08/28 02:23
Jupiter1129: 恩恩~我就是這麼想的...210F 08/28 02:26
wolf86220: 跟著拜就對了211F 08/28 02:29
qmaper: 誰啊212F 08/28 02:32
atbb: 朝聖~213F 08/28 02:37
afs479632: 這寫法真的第一次看到  跪了......214F 08/28 02:39
brownbear: 好像是神級人物215F 08/28 02:41
a2881105: 台灣語言的第一把交椅還不敢快來拜216F 08/28 02:44
aacj2642: 神217F 08/28 02:45
abcdegf34: 今天開始學C語言!!!218F 08/28 02:47
Subaru487: 估狗完,跪著回來推219F 08/28 02:50
lwlt1995: 跪拜大神220F 08/28 02:50
alan23273850: 是說剛剛經過老師指點之後,又寫了程式跑了一下,的221F 08/28 02:52
alan23273850: 確 pipe 會讓前一階的輸出變成後一階的輸入,但現在
alan23273850: 尷尬的是不論用什麼方法都沒辦法把前一階送進來的
alan23273850: input 洗掉,包括老師的 setbuf ...... 這實在太詭
alan23273850: 異了。如果重複 scanf,就會重複吃前一階送進來的字
Marabuda: 先跪推226F 08/28 02:55
alan23273850: 串,中間印出來之後也不會把 buffer 清空,一整個黑227F 08/28 02:55
alan23273850: 人問號 XD 空前絕後始料未及
fezexp9987: 努力學php中229F 08/28 02:56
alan23273850: 大家也不妨串接 pipe 跑跑看,說不定有驚人發現 XD230F 08/28 02:59
alan23273850: 老師的精神真的值得我們學習
oxlittle: 膝蓋好痛232F 08/28 03:01
andy860204: 朝聖推233F 08/28 03:01
goldflower: 居然是jserv XD234F 08/28 03:03
jserv: alan2327385: 感謝實驗,你需要加 if (feof(stdin)) {...}235F 08/28 03:06
jserv: 各位網友,只有作古的人物才會神化,那當然是C語言老爸dmr
jserv: dmr = Dennis M. Ritchie, C 語言和 UNIX 共同發明者
jserv: 我寫報告搞得失眠,看到有人這麼認真討論,我順手回覆
jserv: 希望大家勿輕視buffered I/O背後的學問,絕非「大一就會」
jserv: 這可有多變形,細節涉及資訊安全、作業系統,甚至計算理論
jserv: (原來不能噓自己/ 我程式寫不好,當然要接受大家批評)
yao860718: 朝聖!!就從今天起 開始學C語言!!242F 08/28 03:17
hunterliang: 神串留名243F 08/28 03:19
jserv: 趁亂廣告免費線上C語言講座: http://hackfoldr.org/dykc/244F 08/28 03:21
shadowmirror: 推245F 08/28 03:28
ksjr: 網站看起來很強大!246F 08/28 03:32
wu6u3: 釣到神人了247F 08/28 03:48
beatlesss: jserv!!248F 08/28 04:05
ttping: 有神!!249F 08/28 04:13
EcHENGx1982: O_O/250F 08/28 04:26
banjohn: 有神251F 08/28 04:30
GreatHong: 我決定要好好學C語言了 QQ252F 08/28 04:41
qwaszx012: 快推 免得被說文組看不懂253F 08/28 04:46
Roger0123: 看到ID就跪了254F 08/28 04:54
IsadQQ56: 原來可以這樣用define@@ 學了一課255F 08/28 04:58
smilephoto: 朝聖推 大一菜逼八 看不懂256F 08/28 05:02
aiayaeken: 我要留名 太神啦257F 08/28 05:02
IsadQQ56: 從大一學到現在對UNIX都沒什麼接觸,不太懂用commandlin258F 08/28 05:03
IsadQQ56: e產生random那段
IsadQQ56: 也看不懂scsnf QQ
IsadQQ56: *scanf
mike042865: Wow262F 08/28 05:09
rickey1270: 推263F 08/28 05:12
Anikk: 文組啦264F 08/28 05:20
EGMMA: 推265F 08/28 05:23
willion003: 釣魚釣到大白鯊!266F 08/28 05:34
Aquatics: 宅色夫!267F 08/28 05:41
andyiron: 原來是live coding 神,噓一下覺的開心268F 08/28 05:52
billabcddog: 113欸269F 08/28 06:38
billy4195: 朝聖推270F 08/28 07:16
tony5361627: 朝聖,腿軟了271F 08/28 07:19
abc87987: 朝聖,跪著看QQ272F 08/28 07:24
soheadsome: 朝聖273F 08/28 07:28
a8989332: ....................................................274F 08/28 07:34
katana22: 朝聖275F 08/28 07:45
joewu8267: 這平凡無奇的餌,兒竟然會中大魚~276F 08/28 07:47
SKII588: 有神277F 08/28 07:48
easybaby: Wow278F 08/28 07:48
karry0121: 看不懂哈哈哈 不過還是跪拜一下279F 08/28 07:52
UNicK37: 推Rrr280F 08/28 07:52
ken52011219: 推 服完役準備進成大 希望能選到教授的課281F 08/28 07:59
jamesa12: 跪282F 08/28 08:16
joshua741226: 猛猛der283F 08/28 08:19
tw88: 天啊媽我在這...284F 08/28 08:25
maxwellbkwt: 推285F 08/28 08:27
StevenAn: 這什麼碗糕啊!!? 會C++可以拿來買菜嗎286F 08/28 08:27
legendd: 這也能釣到287F 08/28 08:30
hepatomasu: 推288F 08/28 08:32
windmagic: 朝聖289F 08/28 08:32
nfsnfs: jserv!!!290F 08/28 08:36
tnts3789: 有神快拜291F 08/28 08:39
b81314: 很神 但在這邊問C真的浪費版面292F 08/28 08:43
dd900336: 看得懂推個293F 08/28 08:44
a761007: 朝聖~已跪294F 08/28 08:46
scps950707: 朝聖295F 08/28 08:50
MoonByul: 以後可能有類似作業296F 08/28 08:51
MoonByul: 先卡個
v9290026: 拜一下神298F 08/28 09:00
COOLTARO: 支持文言文!299F 08/28 09:04
vdfoty: 最近很多跑錯版的 奇怪300F 08/28 09:05
mmarty: 老師好301F 08/28 09:06
CHOCOLATER00: !!302F 08/28 09:11
luth0503: 朝聖303F 08/28 09:13
RoaringWolf: 朝聖304F 08/28 09:23
bomda: 朝聖一下305F 08/28 09:33
WindSucker: 卡306F 08/28 09:33
jssmile: JERV~~~~~307F 08/28 09:34
soyjay: 現在流行在八卦版問作業?308F 08/28 09:35
cerberi: 先拜一下309F 08/28 09:35
Siu: 為甚麼^=32..310F 08/28 09:39
kazami0127: 朝聖311F 08/28 09:40
kobe80001: 看id膝蓋軟了312F 08/28 09:41
brizzes: 先推313F 08/28 09:44
joeful6: 朝聖314F 08/28 09:51
mdkn35: 當你還在研究C怎麼寫 java已經把功能都做好了315F 08/28 10:00
migrantama: 媽,我在這裡。。。316F 08/28 10:21
edisonnike: 偶像   推317F 08/28 10:28
ryk: 有神快拜!318F 08/28 10:31
maydaychaaaa: 有神快拜319F 08/28 10:42
achihc: 快推,不然別人以為不會寫程式320F 08/28 10:52
kindaichitom: 宅色夫耶,有神快拜!321F 08/28 10:55
ginauo69: 有神快拜322F 08/28 11:01
ernova831: 啊啊啊啊啊看不懂還是跪下來拜一下323F 08/28 11:05
max0616: 快拜324F 08/28 11:19
Wand: 。。。。。325F 08/28 11:27
yoshiki0502: 快拜,不然人家以為我們看不懂326F 08/28 11:52
megxz: 學會C語言327F 08/28 11:56
xdaymonx99: 一中學長? 推328F 08/28 12:05
vxior: 朝聖329F 08/28 12:11
ggBird: 因為大小寫相差了 32330F 08/28 12:12
fujkokwj: 朝聖331F 08/28 12:46
gncn: 跪332F 08/28 12:51
branko: 朝聖333F 08/28 12:52
max8568: 跪334F 08/28 13:08
EssensePink: 朝聖推335F 08/28 13:08
show95175300: 朝聖推336F 08/28 13:43
aacs0130: 有神快拜337F 08/28 13:49
kersihi: 這餌居然可以釣到神......先跪再說338F 08/28 14:09
user1120: 推!339F 08/28 14:14
weiweird: 推!!340F 08/28 14:54
bluefire: 太扯了這樣也能請超級大師出來。。。341F 08/28 15:00
cornguo: \朝聖/342F 08/28 15:02
timmy5519: 朝聖推 //343F 08/28 15:09
jujustine83: 我看了什麼344F 08/28 15:32
adifdtd: C大神345F 08/28 15:41
james60338: 朝聖346F 08/28 15:54
ajneok: 朝聖!有神快拜 m(_ _)m347F 08/28 16:10
OOQ: 你是在認真什麼啦348F 08/28 16:25
m9fghost: 有神快拜349F 08/28 16:35
jj782995: 先拜再說 雖然我比較喜歡D350F 08/28 16:52
iamten: 八掛能學C 你敢信!!351F 08/28 17:07
Kitakami: 77777777777777352F 08/28 17:33
xx5236294roy: 朝聖 353F 08/28 17:38
alan23273850: 哇哈哈終於完全弄懂啦!!!花了兩、三小時多。原來354F 08/28 18:47
alan23273850: 我一開始就誤會老師的code了,老師一開始的setbuf其
alan23273850: 實是設定buffer的模式,而不是把之前緩衝區的內容清
alan23273850: 空。那如果是在pipe的情況下,想要直接取pipe傳過來
alan23273850: 的文字,當然要使用while(scanf(...)!=EOF),這跟
alan23273850: online judge一樣,如果不檢查EOF,stdin則會保留最
alan23273850: 後一行文字。簡單來說,scanf吃檔案的時候不管有沒
alan23273850: 有EOF不會停,只有吃鍵盤輸入時才會暫停等使用者輸
alan23273850: 入。那如果在pipe的情況下堅持要吃鍵盤輸入,就只能
alan23273850: 使用freopen了,會把stdin改為鍵盤,並摒棄之前的暫
alan23273850: 存。
alan23273850: 這篇文真der讓我獲益良多RRRRRRRRRRRR
goldie:  jserv 大神出現!!!… <(__ __)>366F 08/28 19:01
MidoBanA: 朝聖367F 08/28 19:11
rayallen3001: 老師好 身體要顧好368F 08/28 20:23
MIKEmike07: CCC語言太猛拉 朝聖推369F 08/28 20:27
alan23273850: 不過我後來想一想也蠻有道理的,如果scanf的stdin交370F 08/28 20:36
alan23273850: 給檔案輸入,遇到eof又暫停的話,整支程式就會卡住
alan23273850: 了,難怪要這樣設計。只能說C語言博大精深啊!
lai526: 有神快拜~ 敬群學長好!373F 08/28 21:01
cchao28: 借我噓噓看374F 08/28 21:36
alan23273850: 推回來lar375F 08/28 21:42
ekgs: 你可以自幹一個scanf(誤)376F 08/28 21:49
goldlipe: 文組看不懂朝聖377F 08/29 01:03
rescueM7: 有神快拜378F 08/29 01:42
liflguy: <(-_-)>379F 08/29 02:28
dap0mei: <>380F 08/29 02:32
s5817790: 朝聖381F 08/29 03:50
hdotistyle: 借我噓看看382F 08/29 04:00
chris610020: 神383F 08/29 04:26
holishing:384F 08/29 06:41
jacky510099: 太神啦!385F 08/29 09:06
jserv: alan23273850: 再次感謝心得分享,方便寫篇短文紀錄嗎?386F 08/29 09:26
jserv: 為了避免貼文離題,本文是「有沒有在八卦版學C的八卦?」
pshuang: 這是C++ 不是C啦388F 08/29 09:28
jserv: 承上「有沒有大學課程在八卦版廣告的八卦?」389F 08/29 09:36
jserv: (上述課程網頁的瀏覽數量在24小時內增加近4000人次)
superbil: 八卦人氣真的高呢391F 08/29 09:51
gusony: 神串留名 scanf那邊看不懂 有大大能解釋嗎?392F 08/29 14:30
pcyu16: 推推推推推393F 08/29 14:40
ekgs: 給樓樓上 http://www.cplusplus.com/reference/cstdio/scanf394F 08/29 19:34
ekgs: 簡單的說 是為了處理換行字元395F 08/29 19:35

--
※ 看板: Gossiping 文章推薦值: 0 目前人氣: 0 累積人氣: 1821 
※ 本文也出現在看板: terievv
作者 jserv 的最新發文:
  • +38 Re: [問卦] 有GNU/Linux那有BSD/Linux嗎? - Gossiping 板
    作者: 140.116.246.163 (台灣) 2022-06-12 12:30:49
    回答這問題之前,我們應該先思考「什麼是 BSD?」 依據 FreeBSD 網站 的描述,FreeBSD 衍生自 BSD,後者則是 "the version of UNIX developed …
    49F 38推
  • +404 Re: [問卦] 要怎麼用針在光碟上戳出一個作業系統 - Gossiping 板
    作者: 140.116.246.163 (台灣) 2021-09-04 04:54:37
    「既然你誠心誠意地發問了,我們就大發慈悲地告訴你」(語出「火箭隊」) 這則笑話在 2010 年就出現巴哈姆特電玩資訊站 ,內容改寫自中國網友的創作, 已有十餘年,不過該笑話的弊端在於「針」。DVD 燒 …
    499F 407推 3噓
  • +83 Re: [問卦] 如何在Linux底下自幹win3.1系統? - Gossiping 板
    作者: 140.116.246.163 (台灣) 2021-09-03 12:41:58
    我是跟鄉民進來看熱鬧的,我跳進來了,我又跳出去了,打我啊笨蛋! (取自方唐鏡 名言) 學校老師應該忙著開學事宜,我幫他們回覆你的提問。 原題「在 Linux 系統底下要怎麼自己搞 win3.1 呢?」 …
    101F 83推
  • +230 Re: [問卦] 在卡上打洞寫程式是什麼感覺 - Gossiping 板
    作者: 140.116.246.163 (台灣) 2021-04-23 06:37:27
    剛好我需要跟學生解釋為何 Linux 核心原始程式碼的風格規範 中,限制一行至多 80 個字元,其典故跟「打孔卡」(punched card) 有關。 1890 年代,美國人口普查就使用新發明的穿孔卡 …
    247F 230推
  • +439 Re: [問卦] 原來上 ptt 可以學 linux 操作.. - Gossiping 板
    作者: 140.116.246.163 (台灣) 2021-04-23 00:01:26
    這恰好連結台灣特有的 BBS (電子布告欄) 文化及早期 Linux (和 BSD) 文字編輯器的 關聯。也讓我想起一年前過世的陳昇瑋博士,他的舊名是陳寬達,並以 Xshadow 的名號 馳名於早期的 …
    512F 444推 5噓
點此顯示更多發文記錄
分享網址: 複製 已複製
1樓 時間: 2017-08-28 11:37:02 (台灣)
  08-28 11:37 TW
朝聖推!
2樓 時間: 2017-08-28 12:08:25 (台灣)
  08-28 12:08 TW
文組不懂
3樓 時間: 2017-08-28 20:24:43 (台灣)
  08-28 20:24 TW
很for
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇