2016-08-01 4 views
-3

Im новое программирование на C и im получение ошибки сегментации где-то в моем коде. Программа использует функцию возврата, чтобы спросить у пользователя, сколько денег у них есть на их банковском счете. позже я добавлю код, чтобы рассчитать интерес. Спасибо, что посмотрели на это как на меня, так как у меня много проблем, выясняя, почему я получаю эту ошибку.C-программа: ошибка сегментации

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

int getPV() 
    { 
    int d; 
    int start; 
    printf("Start: "); 
    scanf("%d", start); 
    d = start; 
    return d; 
    } 


int main() 
    { 
    int pv; 
    pv = getPV(); 
    print("%d",pv); 
    return 0; 
    } 
+7

'scanf ("% d ", start);' -> 'scanf ("% d ", & start);'. Совет. Поднимите предупреждения компилятора и никогда не игнорируйте их. – kaylum

ответ

2

Когда вы звоните зсапЕ, вам нужно пройти address of the variable, к которому вы хотите, чтобы сохранить значение.

Это означает, что если вы хотите сохранить значение в переменной start, вам необходимо пройти address of start до scanf.

Вы можете получить адрес переменной, используя оператор &. Таким образом, вы должны изменить вы Scanf на:

scanf("%d", &start); 

Вы получаете ошибки сегментации при использовании scanf("%d", start); потому, что start является автоматическим переменным и будет иметь (случайное) значение мусора в нем, прежде чем присвоить некоторое значение Это. scanf будет обрабатывать это случайное значение, так как адрес, на который будет введено значение пользователя, должен быть сохранен. Теперь, когда scanf пытается сохранить введенное пользователем значение в этом случайном адресе, вы получаете ошибку сегментации, потому что в большинстве случаев вашей программе не разрешается обращаться к этому адресу.

Смежные вопросы