2014-03-24 2 views
-1

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

int main(void) 
{ 
    int totalHeight=0, floorWidth=0, amountOfStories, amountWindowForTop, amountWindowForMiddle, amountWindowForBottom, windowHeight, middleWindowWidth, topWindowWidth, bottomWindowWidth, minimumHeight, minimumWidth; 

    char topFloorWindowContent, middleFloorWindowContent, bottomFloorWindowContent, windowBorder, floorBorder; 

    int tempMax; 

    printf("please enter how many stories your building would like to have: "); 
    scanf("%d",&amountOfStories); 
    minimumHeight=amountOfStories*6+1; 
    while((totalHeight<minimumHeight)||((totalHeight%amountOfStories)!=1)) 
    { 
     printf("please enter the totalHeight (minimum %d): ",minimumHeight); 
     scanf("%d",&totalHeight); 
    } 
    printf("please enter how many window building would have for top floor: "); 
    scanf("%d",amountWindowForTop); 
    printf("please enter how many window building would have for middle floors: "); 

теперь моя программа после компиляции работает только в зсап на amoutWindowForTop после того, как войти в значении для этого ему просто дает мне ошибку сегментации, я понятия не имею, почему. Потому что я не использую указатели, так почему она дает мне эту ошибку? Все, казалось, для того, чтобы меня Это выход

please enter how many stories your building would like to have: 5 
please enter the totalHeight (minimum 31): 31 
please enter how many window building would have for top floor: 2 
Segmentation fault 
+0

Благодарю вас, ребята, я получил это сейчас так глупо, что пропустил это – nanobots

ответ

1

Вы пропустили &,

Line

scanf("%d",amountWindowForTop); 

должен быть

scanf("%d", &amountWindowForTop); 
//---------^ 
1

вы пропустили & в

scanf("%d", amountWindowForTop); 
      ^Place & operator 
+0

OMG, что я знаю. Мне нужно, но если вы положите его на свое лицо, и не заметите ничего себе, просто спасибо, но – nanobots

2

Вы пропустили & в

scanf("%d",amountWindowForTop); 

это должно быть

scanf("%d",&amountWindowForTop); 

Причина ошибки & называется адрес оператора, поэтому его отсутствие в scanf означает, где вы указываете свое значение, означает, что адрес требуется, поскольку он указывает адрес переменной, где мы должны сохранять значение. Ошибка ошибки сегментации, как правило, мы получаем, когда у них есть какая-либо проблема, связанная с адресом. Надеюсь, полезный для вас.

+0

вы могли бы попробуйте следующее: www.hemingwayapp.com :) – Dirk

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