Мне очень сложно понять, почему это происходит. Когда я компилирую и запускаю свой код на терминале linux, функция scanf()
работает хорошо в том смысле, что она принимает ввод, однако по какой-то причине он фактически не сохраняет это значение в назначенной переменной, вместо этого он делает это 1. Я просмотрел свой код и не вижу и не выдаю, но мне не хватает знаний в C, поэтому любая помощь приветствуется.C scanf() Функция Ошибка?
int main() {
int a, b, c, d, e, f;
printf("Please enter the value of a: ");
a = scanf("%d", &d);
printf("a = %d\n", a);
printf("Please enter the value of b: ");
b = scanf("%d", &e);
printf("b = %d\n", b);
printf("Please enter the value of c: ");
c = scanf("%d", &e);
printf("C = %d\n", c);
c = c + b;
printf("C = %d\n", c);
if (a > 1) {
printf("B = %d\n", b);
printf("C = %d\n", c);
} else {
printf("A is smaller or equal to 1 \n");
}
if (b > 3 || c > 3) {
printf("A = %d\n", a);
} else {
printf("B is less than or equal to 3\n");
printf("B = %d\n", b);
printf("C = %d\n", c);
}
}
справка приветствуется.
Итак, вы имеете в виду просто избавиться от & d так, чтобы код выглядел так: scanf ("% d", &a); printf ("a =% d \ n", a) ;? если так, то как это сделать избавиться от этой ошибки: example3.c: 6: 8: warning: игнорирование возвращаемого значения «scanf», объявленного с атрибутом warn_unused_result [-Wunused-result] scanf («% d», &a); Как это было у меня сделанное в первую очередь – MedicoreProgrammer
Кроме того, спасибо за ваш вклад, я знаю, по крайней мере, знаю, почему значение всегда одно, поскольку я только вводю значение 1. – MedicoreProgrammer
Это изменение будет работать, чтобы получить типизированное значение в переменной 'a'. предупреждает, что вы не проверяете, сколько значений сканируется, например, 'scanf()' может возвращать 0, если вы сканируете целое число, но введите «asdf». Вы можете сделать что-то вроде 'int scananned = scanf ("% d", &a); if (scanned <1) return -1; 'для выхода из программы раньше, если' scanf() 'не увенчался успехом. – Tim