簡體   English   中英

無限while循環和控制-c

[英]Infinite while loop and control-c

因此,我編寫了以下代碼:

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");
}
}

while循環應該是無限的。 我的教授說了一些有關使用CTRL-C退出無限while循環的事情,但這不適用於我編寫的代碼。 我缺少一些簡單的東西嗎? 有人可以指出正確的方向嗎? 謝謝! (注意:這只是代碼的一部分。)

這應該為您工作:

(我在這里添加了一個信號處理程序,該處理程序檢查您是否按了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;

}
while(1)
{
}

這是一個無限循環,在while循環中應該有一些條件可以打破它。 ctrl+c將終止您的程序。 因此,在循環中應該有一些條件可以代替ctrl + c來break它。 如果應使用ctrl+c來打破循環,則需要使用signal handler來處理ctrl+c信號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM