Как вывести целочисленный эквивалент символов в c? - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь вывести целочисленные эквиваленты символов; :? , и пробел, но это не работает.

printf( "Following symbols ending with a whitespace: - = + / \ ; : ? . [whitespace]\n" );

printf( "%d, %d, %d, %d, %d, %d, %d, %d, %d, %d\n", '-', '=', '+', '/', '\', ';', ':', '?', '.', ' ' );

Я успешно напечатал целочисленные эквиваленты AZ, az, 0-20 и других символов. Однако, когда я пытаюсь скомпилировать эту строку, возникает проблема с символами от точки с запятой справа. В командной строке для VS 2019 я получаю следующую ошибку.

IntegerValueOfChar.c(29): warning C4129: ' ': unrecognized character escape sequence

IntegerValueOfChar.c(31): error C2143: syntax error: missing ')' before 'constant'

IntegerValueOfChar.c(31): warning C4473: 'printf' : not enough arguments passed for format string

IntegerValueOfChar.c(31): note: placeholders and their parameters expect 10 variadic arguments, but 5 were provided

IntegerValueOfChar.c(31): note: the missing variadic argument 6 is required by format string '%d'

IntegerValueOfChar.c(31): error C2137: empty character constant

IntegerValueOfChar.c(31): error C2059: syntax error: ')'

Как мне решить эту проблему? Я использую Notepad ++ вместе с компилятором Visual Studio. Спасибо за помощь разочарованного нуба.

1 Ответ

7 голосов
/ 11 марта 2020

Проблема в том, что символ backsla sh используется в качестве escape-префикса внутри символьных констант и строковых литералов. Чтобы представить действительный символ возврата на одну строку как символьную константу или внутри строкового литерала, его необходимо удвоить:

printf( "Following symbols ending with a whitspace: - = + / \\ ; : ? . [whispace]\n" );
printf( "%d, %d, %d, %d, %d, %d, %d, %d, %d, %d\n", '-', '=', '+', '/', '\\', ';', ':', '?', '.', ' ' );
...