2017-02-08 9 views
-6

Эта программа запрашивает номер независимо от того, какой символ вы вводите. Тогда проблема в цикле while.Почему мое условие цикла не работает?

Почему мое состояние цикла не работает? проверка температуры не равен NULL

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

typedef struct node 
{ 
    int num; 
    struct node *ptr; 
} nod; 
nod *head = NULL; 

void insert() 
{ 
    int n; 
    nod *temp = (struct node*) malloc(sizeof(struct node)); 
    printf("Enter nnumber \n"); 
    scanf("%d", &n); 
    temp->num = n; 
    temp->ptr = NULL; 
    if (head == NULL) 
    { 
     head = temp; 
    } 
    else 
    { 
     temp->ptr = head; 
     head = temp; 
    } 
} 

void display() 
{ 
    nod* temp; 
    temp = head; 
    while (temp != NULL) 
    { 
     printf(" --> %d", temp->num); 
     temp = temp->ptr; 
    } 
} 

int main() 
{ 
    char ch; 
    do 
    { 
     insert(); 
     display(); 
     char ch; 
     printf("\n enter more data ? (y/n)"); 
     scanf("\n %c", &ch); 
    } 
    while (ch != 'n'); 
    return 0; 
} 

Заранее спасибо

+3

хия, правильно отформатирован вопрос более приветствуется здесь :) – sjsam

+0

я вижу потенциальную проблему, но сначала изменить свой вопрос, так это выглядит читаемым. –

+0

Боковое примечание: все ваше определение функции должно быть «... (void)» – LPs

ответ

2

Почему вы повторно объявитьchar ch внутри loop?

Удалить char ch внутри цикла и исправить вашу проблему. Мол,

int main() 
{ 
    char ch; 
    do 
    { 
     insert(); 
     display(); 
     printf("enter more data ? (y/n)\n"); 
     scanf(" %c", &ch); 
    } 
    while (ch != 'n');  
    return 0; 
}