#include <stdio.h>

int main() {
    char a;
    while (scanf(" %c", &a) != EOF) { 
        printf("%d\n", a);
    }
    return 0;
}

这里需要注意scanf函数中%c前面有个空格,如果没有这个空格,while循环会将\n换行符也输入进去造成输出ASCll值10(回车),造成输出错误。要么就不用这个while循环,要么就需要再%c前面加一个 空格 “ ”。

在C语言中,空格字符(空格、制表符、换行符等)在格式字符串中的作用是跳过输入中的空白字符。当使用scanf函数读取字符时,如果格式字符串中包含了空格字符(例如" %c"),则scanf函数会跳过输入中的空白字符(包括换行符)并继续读取下一个非空白字符。

在你的代码中,当输入字符时,scanf函数会读取字符并将其存储到变量a中。但是,如果格式字符串中没有空格字符,scanf函数会读取输入中的所有字符,包括空白字符和换行符。这就导致了在输出时,除了字符的ASCII码值外,还会输出换行符的ASCII码值。

通过在格式字符串中加入空格字符(例如" %c"),scanf函数会在读取字符之前跳过输入中的空白字符,包括换行符。这样就可以实现忽略换行符的效果,只输出字符对应的ASCII码值。

需要注意的是,在格式字符串中的空格字符只会跳过空白字符,而不会跳过其他非空白字符。

如果你想要跳过其他特定的字符,可以在格式字符串中指定相应的字符。例如,如果你想要跳过逗号字符(','),可以使用" %c"格式字符串来忽略空白字符和逗号字符。