2014-11-17 4 views
1

Итак, я написал следующий код:Бесконечное время цикла и управления-с

void main(void) { 

int charNums[ALPHABET], i = 1; 
char word[MAX]; 

while(i) { 

    initialize(charNums, word); 

    getString(word); 
    setLetters(charNums, word); 

    getString(word); 
    checkLetters(charNums, word); 

    if(isZero(charNums)) 
     printf("Anagram\n"); 
    else 
     printf("Not anagram\n"); 
} 
} 

Петля в то время как бесконечна, что она должна быть. Мой профессор сказал что-то об использовании CTRL-C для выхода из бесконечного цикла while, но это не работает с тем, что я закодировал. Я пропустил что-то простое или что? Может ли кто-нибудь указать мне в правильном направлении? Спасибо! (Примечание: это только часть кода.)

+0

Вы можете проверить условие с 'if' и использовать' break; ', чтобы разбить цикл – Rizier123

+0

Можете ли вы сделать условие нажатием ctrl-c? Если да, то как же это сделать? – user3727648

+0

Сделал ответ с обработчиком сигнала, поэтому он проверяет, ударил ли ваш ctrl-c! – Rizier123

ответ

1

Это должно работать для вас:

(Здесь я добавить обработчик сигнала, который проверяет, является ли вы нажимаете Ctrl + C, и если так это останавливает цикл)

#include <unistd.h> 
#include <stdio.h> 
#include <signal.h> 

volatile sig_atomic_t stop; 

void inthand(int signum) { 
    stop = 1; 
} 

int main(int argc, char **argv) { 

    signal(SIGINT, inthand); 

    while (!stop) 
     printf("loop\n"); 

    printf("exiting safely\n"); 
    system("pause"); 

    return 0; 
} 

так я думаю, что ваша программа должна выглядеть следующим образом:

#include <unistd.h> 
#include <stdio.h> 
#include <signal.h> 

volatile sig_atomic_t stop; 

void inthand(int signum) { 
    stop = 1; 
} 

int main(int argc, char **argv) { 

    signal(SIGINT, inthand); 

    int charNums[ALPHABET], i = 1; 
    char word[MAX]; 

    while(!stop) { 

     initialize(charNums, word); 

     getString(word); 
     setLetters(charNums, word); 

     getString(word); 
     checkLetters(charNums, word); 

     if(isZero(charNums)) 
      printf("Anagram\n"); 
     else 
      printf("Not anagram\n"); 
    } 

    printf("exiting safely\n"); 
    system("pause"); 
    return 0; 

} 
0
while(1) 
{ 
} 

Это бесконечный цикл должен быть какое-то условие в цикле в то время, чтобы вырваться из него. ctrl+c закончит вашу программу. Поэтому вместо ctrl + c должно быть какое-то условие в цикле до break. Если ctrl+c следует использовать, чтобы вырваться из цикла, то вам нужно использовать signal handler обрабатывать ваш ctrl+c сигнал

+0

Нам было специально сказано использовать ctrl-c – user3727648

+0

@ user3727648. Затем вам нужно использовать обработчик сигналов для обработки 'ctrl + C' – Gopi

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