[英]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.