C — целое число, выбрасывающее случайное значение?

#c

#c

Вопрос:

В настоящее время я пишу простую программу на C, которая считывает значения, введенные пользователем в цикле. По какой-то причине, когда я инициализирую целое число a , мне присваивается случайное значение, в отличие от указанного мной значения. Любая помощь была бы с благодарностью

 #include <stdio.h>

int main()
{
    char sName[10];
    int sTime;
    int a = 0;

    printf("%d", amp;a);

    printf("Please enter the name of your snail: ");
    scanf("%s", amp;sName);

    for(a = 10; a < 20; a = a   1) {
        printf("%d", amp;a);
        printf("Please enter the %d time of your snail: ", amp;a   1);
        scanf(" %d ", amp;sTime);
    }
    return 0;
}
  

Комментарии:

1. amp;a возвращает АДРЕС переменной (например, указатель).

2. еще одна ошибка заключается в том, что " %d " в последнем сканировании должно быть "%d" (без пробелов). И amp;sName должно быть sName .

Ответ №1:

Измените это:

 printf("%d", amp;a);
  

к этому:

 printf("%d", a);
  

amp;a это адрес a (и это типа int* , поэтому %d это неправильный формат). a дает вам значение a .

Вам все еще нужен amp; in scanf(" %d ", amp;sTime); ; scanf нужен адрес sTime , чтобы он знал, где хранить значение.

Ответ №2:

Вы печатаете адрес a . Вы не хотите, чтобы amp; там:

 printf("%d", a);
  

Вам действительно нужен amp; for scanf() , потому что вам нужно указать этой функции, где (по какому адресу) хранить значение.