2015-09-03 2 views
2

Я очень новичок в C, поэтому решение, вероятно, тривиально, но я не могу понять это. Я получаю ошибку сегментации, когда я бегу getDemensions() в моей программе:ошибка сегментации с помощью scanf и указателей

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

void getDemensions(double *, double *); 
void calculateAreaAndCircumference(double, double, double *, double *); 
void displayRectangleInformation(double, double, double, double); 

int main() { 
    double length, width, area, circumference; 

    getDemensions(&length, &width); 

    calculateAreaAndCircumference(length, width, &area, &circumference); 

    displayRectangleInformation(length, width, area, circumference); 
} 

void getDemensions(double *length, double *width) { 
    printf("Enter rectangle length: "); 
    scanf("%lf", *length); 
    printf("Enter rectangle width: "); 
    scanf("%lf", *width); 
} 

Также стоит отметить: Я попытался с помощью «&» перед переменными в зсапЕ() без ошибки сегментации, но вход не сохраняется.

ответ

5

scanf ожидает указатель. Поскольку length и width указатели уже, вы просто передать их scanf с:

void getDemensions(double *length, double *width) { 
    printf("Enter rectangle length: "); 
    scanf("%lf", length); 
    printf("Enter rectangle width: "); 
    scanf("%lf", width); 
} 
+0

Это сработало, спасибо! –

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