回車符與換行符問題——C語言


回車符(carriage return,’\r’)與換行符 (line feed,’\n’)

換行對應的ASCII碼值是10,回車符對應的ASCII碼值是13,需要注意的是用戶按下回車鍵時,對於不同的字符輸入函數讀取的字符不同,下面上代碼

 

測試一:

int main() { char ch; ch = getchar(); printf("%d\n", ch); }

運行結果:

 

測試二:

int main() { char ch; ch = getch(); printf("%d\n", ch); }

運行結果:

 

測試三:

int main() { char ch; ch = getche(); printf("%d\n", ch); }

運行結果:

 

測試四:

int main() { char ch; scanf("%c", &ch); printf("%d\n", ch); }

運行結果:

 

從上面的結果可以看出,雖然輸入都是“回車鍵”(注意是回車鍵不是回車符)但得到結果卻有差異,需要注意的是:在Windows系統中回車鍵被當做\r\n 的組合來使用,當我們從鍵盤輸入回車鍵時,Windows系統會把回車鍵當做\r\n 來處理(只不過上面的四種字符輸入函數讀取的結果不同

getchar——換行符'\n'(ASCII值為10)

getch——回車符'\r' (ASCII值為13)

getche——回車符'\r' (ASCII值為13)

scanf——換行符'\n' (ASCII值為10)

回車:使光標移到行首

換行:使光標移到下一行

 

下面再補充下文件操作函數,從文本文件(txt文件)用fscanf_s讀取(前提條件:先創建一個txt文件按一下回車鍵,然后保存)

char ch; FILE *fp; errno_t err; err = fopen_s(&fp, "E:\\ww.txt", "r"); fscanf_s(fp, "%c", &ch, sizeof(ch)); printf("%d\n", ch);

運行效果:

從上面可以看出fscanf_s和scanf對回車鍵的讀取是相同的,都是得到的換行符'\n'(ASCII值為10)

 

使用fgetc讀取

int main() { char ch; FILE *fp; errno_t err; err = fopen_s(&fp, "E:\\ww.txt", "r"); ch = fgetc(fp); printf("%d\n", ch); if (ch == '\r') { printf("***"); } return 0; }

運行結果:

 

從上面的結果可以看出fgetc和fscanf_s讀取的字符相同,都是讀取到的換行符'\n'(ASCII值為10)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM