Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

nightmared02 avatar nightmared02 0 Точки

Проблем със scanf() - винаги чете "1"

Здравейте,

Забавлявам се със задачите от първото домашно. Имах няколко неуспешни опита с импортването на math.h в Xubuntu, но пожънах успех като добавих "-lm" в линкера на Netbeans 7.0 (както каза г-н Гугъл).
Не можах обаче да се справя със scanf() - винаги чете "1".

Това е примерен код и резултат:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char** argv) {
    printf("How many values to display: ");
    int numbers = scanf("%d", &numbers);
    printf("You entered: %d\n", numbers);
return (0);
}
How many values to display: 200
You entered: 1

Това се случва както с цели числа, така и с такива с десетична запетая.

Може ли някой да помогне с този казус, защото всички примери, които намерих не работят?

П.С.
Ако не използвам scanf(), а пиша направо числата няма проблем и всичко работи.
 

Тагове:
0
C Programming
Filkolev avatar Filkolev 4482 Точки

Правиш присвояване. scanf връща стойност, предполагам в зависимост дали четенето е успешно или нещо такова, виж документацията.

Това, което трябва да направиш, е да декларираш отгоре променливата и на нов ред да извикаш функцията:

int numbers;
scanf("%d", &numbers);

Edit: Ето защо се получава:

"On success, the function returns the number of items of the argument list successfully filled. This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file."

1
12/10/2015 23:46:58
nightmared02 avatar nightmared02 0 Точки

Така вече е ОК :)

Както винаги грешката е RTFM - Read The F*cking Manual...

Много благодаря!

0
VirtualBG avatar VirtualBG 10 Точки

Здравейте,

някой може ли да ми каже защо този код не иска да се билдне?

#include <stdio.h>
#include <math.h>
int main() {
    int number;
    scanf("%d", &number);          
    printf("%f",sqrt(number));
    return 0;
}

Като подам на sqrt() директно число, а не променлива работи правилно.

0
Omilron avatar Omilron 4 Точки

Или така:

gcc -your-program-name.c -o -your-program-name -lm

2
VirtualBG avatar VirtualBG 10 Точки

Благодаря :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.