考慮這個線程What is EOF in the C programming language?爲什麼Ctrl-J和Ctrl-M在OSX的c編程中返回10?
答案是EOF
(按Ctrl-d)成果在getchar
返回-1
- 我的問題是什麼按Ctrl-J和Ctrl-M代表C對OSX以及爲什麼
getchar
返回10都使用與上面鏈接相同的代碼? - 什麼其他快捷鍵(Ctrl-somthing/Cmd-something)導致
getchar
變成一個靜態預定義數字?
考慮這個線程What is EOF in the C programming language?爲什麼Ctrl-J和Ctrl-M在OSX的c編程中返回10?
答案是EOF
(按Ctrl-d)成果在getchar
返回-1
getchar
返回10都使用與上面鏈接相同的代碼?getchar
變成一個靜態預定義數字?stdin
通常在文本模式。在文本模式下讀/寫時,每個操作系統會發生各種轉換,涉及行結尾。 Crtl-M就是其中之一 - 它被轉換爲10.如果IO處於二進制模式,則不會有轉換。
控制檯將各種鍵盤組合映射到各種char
和動作(如Ctrl-D→EOF)。當然,創建的各種char
包括大多數值0到127.由於這些值通常映射到ASCII,前32個值(Ctrl- @,CTRL-A,CTRl-B,... Ctrl-_),它們可以沒有圖形表示
注意:注意getchar()
在返回EOF
後再次被調用時會返回什麼。期待它再次立即返回EOF
而不用等待任何額外的按鍵。 (Ctrl-D)設置一個條件,而不是一個字符。
按Ctrl-J爲換行控制字符中的快捷方式,其具有字符代碼10 Here與其它控制字符
一個頁I作爲此時不知道爲什麼按Ctrl-M( ASCII值13)返回10,但認爲它是由於它在功能上與換行相似。
EOF返回-1的原因是因爲它在大多數系統上的值爲-1。
一些其他定義的字符:
按Ctrl-G:7
按Ctrl-I:9
...
Ctrl-V鍵:22
+1。爲Ctrl-M添加更多信息。 – user1336087 2014-10-28 13:53:26
謝謝,但我主要對回報感興趣。請參閱上面的鏈接。在OSX上,Ctrl-D總是返回-1。是否有其他捷徑總是返回預定義的數字? – userjuicer 2014-10-28 13:54:15
@userjuice如果你按照提供的鏈接,你會發現控制代碼和這些的歸因整數值。 – 2014-10-28 14:12:03
你在做什麼,以便MacOS X返回任何東西?要更精確一點。我們無法讀懂你的想法。 – gnasher729 2014-10-28 13:46:08
只需在線程中使用其他快捷方式測試相同的代碼即可。我使用快捷鍵作爲控制程序流程的另一種方式。我只是好奇10從何而來,以及Ctrl-J/M是否總是返回10,以及是否有其他快捷方式。 – userjuicer 2014-10-28 13:48:39
請仔細閱讀其他答案。它沒有說'EOF(Ctrl-D)返回-1',相反。它表示按下鍵盤序列'Ctrl-D'表示流的結束,然後使'getchar'返回'EOF'。 'EOF'是一個特殊的值,用於通知呼叫者文件結尾到達。通常這個'EOF'值是'-1',但可以是任何其他負值。 – 2014-10-28 14:06:59