2016-06-12 3 views
-2

Я пишу простую программу на C, чтобы принять номер ввода от пользователя и отображать его только потому, что раньше я писал какую-то программу на языке C, и эта глупая ошибка прослушивает меня, она не была там раньше пока вчераНе могу получить правильный ввод в программировании на C

#include<stdio.h> 
#include<stdlib.h> 
int main(void) 
{ 
    int a; 
    printf("Enter a number"); 
    scanf("%d",&a); 
    printf("Display number%d",&a); 
} 

Каждый раз, когда я запускаю программу, которые принимают входной он отображает, казалось бы, случайное значение, а не один я вошел не только в этой программе в любой другой тоже здесь является O/р: Введите число: 12 Номер дисплея: 2752300 Возвращенный процесс 7 (0X7) время выполнения: 1.880s Нажмите любую клавишу, чтобы продолжить

Я не знаю, является ли ошибка компилятора или ошибка памяти причиной этой проблемы, но для записи я попытался использовать другую IDE, такую ​​как DEV C/C++, Turbo C/C++ и Code Blocks, но ошибка остается неизменной во всех ее версиях, кроме как в Turbo C/C++ он отображает подписанное число i, например: если ввод равен 12, он отображает: -12.

+1

Не размещайте изображения текста! Было ли проще сделать этот снимок вместо копирования/вставки этих нескольких строк? И посмотрите, какой тип аргумента 'printf' берет! Предупреждения компилятора не для удовольствия, но должны приниматься всерьез. Включите их и обратите внимание. – Olaf

+0

Вы знаете, что можно выбрать текст в окне консоли и скопировать его в буфер обмена? Изображения должны использоваться только тогда, когда нет другого способа проиллюстрировать проблему. Ненужное использование изображений неуместно по целому ряду причин. Существует список причин, по которым вы не должны размещать изображения своего кода в [этой мета-почте] (http://meta.stackoverflow.com/a/285557/62576); подавляющее большинство этих причин также применяются к ненужным изображениям, связанным с выходом текста на консоль. Подумайте. –

+0

@ KenWhite извините за это я запомню его в будущем –

ответ

6

Проблема в заявлении на печать. Вы печатаете адрес a, а не значение. Используйте print("%d",a);

+0

спасибо, что это была ошибка новобранец, я трачу весь день на ее фиксацию: P –

+0

Большинство из нас было там – DrC

2

Формат %d спецификатор для printf ожидает int, не int *:

printf("%d",a); 

Это не пытается писать a, поэтому он не нуждается в его адрес.

Если вы собираете с уровнем предупреждения оказался (-Wall -Wextra для GCC), он сообщит вам об этом:

format ‘%d’ expects type ‘int’, but argument 2 has type ‘int *’ 
0

зсапЕ нужен указатель на переменную, если она собирается изменить саму переменную, так мы используем адрес-оператора для получения указателя.

scanf() получил «% d» в качестве параметра, а затем знает, что ему нужно прочитать целое число и сохранить его в следующей переменной в списке аргументов.

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

    int main(void) 
    { 
    int a = 0; 
    printf("Enter a number: "); 
    scanf ("%d" ,&a); 
    printf ("%d \n ",a); 
return 0; 
} 
Смежные вопросы