❶ c語言 為什麼按兩下回車才運行
c語言通過標准輸入設備(鍵盤)輸入的時候是先把數據存到緩沖區裡面。
首先編譯器看到scanf("%c", &ch);後知道需要一個字元,那麼就在緩沖區里尋找找是否有一個字元,如果緩沖區中沒有則會請求用戶輸入。而如果緩沖區有字元的話就會把緩沖區里的字元存入變數中。在你剛才的輸入時,字元'a'和回車('\n')都會存放在緩沖區中,所以第二次scanf不會請求用戶輸入而直接把\n存到變數中去了。
你可以這樣寫:
printf("Please enter a character:\n");
scanf("%c\n",&ch);
這樣可以把換行字元從緩沖區清除掉。
你可以ctrl+z或者ctrl+d
❷ C語言中,為什麼有些程序最後輸出時要加換行符,有的不用
c語言在向計算機輸入文本文件時,將回車換行符轉換為換行符,在輸出時把換行符轉換成回車和換行兩個字元。
在用二進制文件時,不進行這種轉換,在內存中的數據形式與輸出到外部文件中的數據形式完全一致,一一對應。
c語言中怎樣知道文件中的換行符是
還是
回答是:這是一個實現相關的問題。
首先糾正一下你說法中的錯誤:
是回車,在c中就是字元'\r';換行是
,是字元'\n'。
在windows環境中,如果輸入到文本文件,程序中的一個'\n'換行符被解釋成'\r'、'\n'兩個字元(會車、換行);相反,如果讀取文本文件,文件中的相鄰的兩個'\r'、'\n'會合並為一個'\n'輸出。
而在unix/linux環境下,'\n'就是'\n',保持不變。
因此,windows下的文本文件和unix/linux下的文本文件的格式是不同的,其原因就在於對於程序中的'\n'換行符的解釋不同。
n,換行符(軟回車和走紙)
是換行走紙,沒有回車,回車是由'\r'實現
在unix中,早期的輸入通常是穿孔機,沒有什麼回車概念。在dos中,由於是屏幕輸入,通常就有了'\r''\n'的區別,為了保證每次換行都能從頭開始,dos中的換行符通常會被存儲為'\r\n';getchar是標准流接受函數,不識別'\r',getche是有回顯的屏幕截取函數,不識別'\n'。
❸ 在c語言中為什麼寫完代碼運行之前都要敲一下回車鍵在這里敲回車鍵是代表什麼意思麻煩幫忙解答
c語言並沒有要求寫完代碼要敲空格,這是個人的習慣問題。
❹ c語言里吸收回車鍵是什麼意思
例如scanf();這個要回車(\n)才可以讀入數據,接著做各種事。某個時候要讓用戶輸入Y/N決定是否干某件事,然後用c=getchar再去讀,這樣的話,c會是上面的回車「\n」,而不是Y或者N,所以要把\n吸收,這樣才可以正確讀取到Y或者N
❺ c語言中 scanf後面一定要跟個 getchar吃回車嗎
scanf
函數就是設計用來格式接受鍵盤輸入的,在這個函數中收到回車(不是\n)代表輸入結束,函數開始讀取數據。因此並不需要在scanf後面加一個getchat()。
❻ C語言什麼時候應該加getchar()吃掉回車
在需要連續輸入的情況下,也就是你剛輸入完一個字元串,後面還需要輸入另一個,需要加一個getchar(),用它來抵消那個回車鍵,要不第二個字元串會有問題。
❼ 請問在C語言中回車符、換行符、回車換行符的主要作用是什麼,它們有哪些區別和聯系
你說的沒錯,換行(\n)就是游標下移一行卻不會移到這一行的開頭,回車(\r)就是回到當前行的開頭卻不向下移一行.
Enter鍵按下後會執行\n\r這樣就是我們看到的一般意義的回車了,所以你用16進制文件查看方式看一個文本,就會在行尾發現"\n\r"
Tab是製表符,就是"\t",作用是預留8個字元的顯示寬度,用於對齊
❽ c語言中 scanf後面一定要跟個 getchar吃回車嗎
c語言中在讀取鍵盤數據時,一般是帶緩存的數據輸入,需要按回車鍵才能完成該「行」數據的輸入確認。
而scanf()函數對這個回車確認符並不進行處理,回車符會留在輸入緩存區中。
因此,在下一個讀「字元」操作函數(getchar, scanf("%c"), gets()等)運行時,會讀到這個字元。
而在讀數值型數據或字元串時,scanf()會從第一個非空白字元(空白字元指:回車,空格,TAB鍵)開始讀取,自動忽略前面的空白字元,而遇到空白字元結束該類型數據的輸入。
因此,是否一定要在scanf後面跟個 getchar吃回車,要看下一個輸入的數據類型是什麼,如果是讀字元類操作,處理辦法有多種方式:
一、用fflush(stdin)命令強行刷新輸入緩存,丟棄輸入緩存中的數據,此種方法在windows下使用有效,linux無效。
charch;
fflush(stdin);//不管緩存中有沒有數據,強行清除
ch=getchar();//這里會等待用戶輸入一個字元
二、前面有讀數據操作,現在要執行讀字元操作,則可用getchar()來吃掉前面的回車確認
inti;
charch;
scanf("%d",&i);//讀一個整數,回車確認
getchar();//先吃掉回車確認符,這兩句,效果同下一方法的那一句
ch=getchar();//這里會等待用戶輸入一個字元
三、在scanf()書寫上做文章,如:讀一個數據,以回車確認,則輸寫成如下格式
inti;
charch;
scanf("%d%*c",&i);//%*c表示讀一個字元,並不賦值給任何變數
ch=getchar();//這里不會讀到回車符