#c #return #printf #return-value #scanf
#c #Возврат #printf #возвращаемое значение #сканирующий #scanf
Вопрос:
#include <stdio.h>
int main(){
char testChar;
printf("%dn", scanf("%c", amp;testChar));
return 0;
}
Все, что я хотел, это напечатать количество отсканированных символов. Но, когда я все мои входные данные имеют одинаковый результат, т.е. 1.
Комментарии:
1. Да, потому что вы отсканировали 1 символ.
2. Может быть, вы хотите прочитать документацию
scanf
. Вы должны провести хотя бы некоторые незначительные исследования, прежде чем задавать вопрос!
Ответ №1:
scanf()
возвращает количество успешно отсканированных элементов. Итак, во всех ваших запусках scanf()
все прошло успешно, и, следовательно, ваша программа печатает 1.
От scanf()
:
При успешном выполнении эти функции возвращают количество элементов ввода, успешно подобранных и назначенных; это может быть меньше, чем предусмотрено, или даже равно нулю, в случае раннего сбоя сопоставления.
Значение EOF возвращается, если конец ввода достигнут до того, как произойдет либо первое успешное преобразование, либо ошибка сопоставления. EOF также возвращается, если возникает ошибка чтения, и в этом случае устанавливается индикатор ошибки для потока (см. ferror(3)), а errno устанавливается для указания ошибки.
Ответ №2:
scanf()
only scans your first character input and returns 1.
Ответ №3:
Вы можете попробовать это, чтобы напечатать количество символов, прочитанных из stdin
. С использованием scanf
в цикле.
#include <stdio.h>
#include <stdlib.h>
int
main(void) {
char testChar;
int numchar = 0;
printf("Enter characters, CTRL-C to end:n");
while (scanf("%c", amp;testChar) == 1) {
numchar ;
}
printf("Number of characters scanned: %dn", numchar);
return 0;
}