嘗試創建一個簡單的 C 字符到 ASCII 轉換器
但結果在每個 printf 后列印“10”。
任何想法來解決這個問題?
編譯器:mingw64/gcc
來源:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char argc;
printf("Enter for ASCII: ");
do {
scanf("%c", &argc);
printf("%d\n", argc);
} while (argc != 'Z');
}
輸出:
$ ./ascii.exe
Enter for ASCII: A
65
10
S
83
10
D
68
10
V
86
10
X
88
10
Z
90
uj5u.com熱心網友回復:
scanf
使用格式字串"%c"
讀取所有字符,包括空格字符,例如'\n'
與按下的 Enter 鍵對應的換行符。要跳過空白字符,您可以在格式字串前面加上一個空格,例如
scanf( " %c", &argc);
^^^^^
C 標準 7.21.6.2 fscanf 函式
5 由空白字符組成的指令通過讀取輸入到第一個非空白字符(保持未讀)或直到無法讀取更多字符來執行。
或者您可以通過以下方式在回圈中忽略它
do {
scanf("%c", &argc);
if ( argc != '\n' ) printf("%d\n", argc);
} while (argc != 'Z');
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/363030.html
上一篇:平均值計算不正確