回車符(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)