所以,我写了下面的代码:
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退出无限循环的东西,但这对我编码的东西不起作用。我错过了一些简单或什么?有人可以指点我正确的方向吗?谢谢! (注意:这只是代码的一部分。)
答案 0 :(得分:4)
这应该适合你:
(这里我添加了一个信号处理程序,检查你是否按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;
}
答案 1 :(得分:0)
while(1)
{
}
这是一个无限循环,在while循环中应该有一些条件来突破它。
ctrl+c
将终止您的计划。因此,在循环内应该有一些条件,而不是ctrl + c。break
。
如果ctrl+c
应该用于摆脱循环,那么您需要使用signal handler
来处理ctrl+c
信号