#include <stdio.h>
int main() {
int days = scanf("%d", &days);
printf("%d", days);
return 0;
}
Результат 1 несмотря ни на что.
7
1
Я использовал scanf много раз и никогда не сталкивался с этим. В чем дело?
#include <stdio.h>
int main() {
int days = scanf("%d", &days);
printf("%d", days);
return 0;
}
Результат 1 несмотря ни на что.
7
1
Я использовал scanf много раз и никогда не сталкивался с этим. В чем дело?
Это правильно, потому что scanf()
возвращает количество успешно сопоставленных и преобразованных элементов. Учитывая правильный ввод в вашем случае, каждый раз, когда ваш ввод проходит преобразование, вы видите значение 1.
Обратите внимание: scanf()
не возвращает само отсканированное значение, а сохраняет значение в переданном аргументе.
Цитирование C11
, глава §7.21.6.4
[...] функция
scanf
возвращает количество назначенных входных элементов, которое может быть меньше, чем предусмотрено, или даже равно нулю, в случае неудачи раннего сопоставления.
Тип возврата scanf должен указать, успешно ли было прочитано целое число.
Это сделает то, что вы ожидаете
#include <stdio.h>
int main() {
int days = 0;
scanf("%d", &days);
printf("%d", days);
return 0;
}
days
с помощью кода возврата из функцииscanf
. - person t0mm13b   schedule 31.03.2017scanf
непонятно? - person too honest for this site   schedule 31.03.2017