Tag: 无限循环

而scanf EOF循环行为不当

我是C的初学者,我遇到了一些我无法弄清楚的问题,并且无法在其他线程上找到解决方案。 我正在尝试使用以下代码从键盘输入/ txt文件中读取整数: int grades[MAX_GRADES_LENGTH]={0}, histogram[HISTOGRAM_SIZE]={0}; int maxGradesHistogramBucket=0, median=0, gradesLength=0; double avg=0.0; int grade=0; printf(“Enter grades:\n”); while (scanf(“%d”,&grade) != EOF) { grades[gradesLength]=grade; gradesLength=gradesLength+1; } 我应该在grades []数组中设置这些“等级”并计算循环中数组的长度。 不知怎的,循环行为不端,似乎有些输入对循环没问题,但是对于某些输入(实际上大部分都是),scanf()不会得到EOF,无论它是文件的实际结尾,还是^ D终端中的命令。 我听说scanf()不是读取数据最可靠的方法,但遗憾的是我不能使用其他任何东西,因为我们没有在课堂上学过任何其他方法,所以我们只能在我们的作业中使用scanf()。 我试图用== 1更改!= EOF并且它们都一样。 输入 100 0 90 10 80 20 70 30 60 40 50 例如它工作正常。 但是对于输入: 0 50 100 循环是无限的。 我正在使用macbook pro btw(如果重要的话)。 有任何想法吗?

C程序无限循环

当我运行我的程序时,它无限期地要求输入密码。 我输入了正确的密码,但它只是循环回来。 编译时没有错误。 为了编译,我使用了: gcc -ansi -W -Wall -pedantic -o prog myProgram.c chmod +x prog 我正在运行ubuntu可信赖。 这是与密码相关的代码: char string[100] = “”; int main(void) { char correctPassword[25] = “myPassword”; char password[25] = “”; system(“clear”); printf(“Enter your password:\n”); scanf(“%s”, password); if (password == correctPassword) { system(“clear”); printf(“Enter a string:\n”); scanf(“%s”, string); } else { system(“clear”); printf(“Sorry, incorrect […]

C中的无限循环代码

在下面的程序中,我尝试输入1到100之间的数字,但是如果我在scanf()语句的执行时间内输入’character’或”string” (如s或sova ),则会创建一个无限循环。 所以我试着做….当我输入一个字符串或一个字符时,它向我显示了一个消息,例如“输入了错误的值。再次输入”,它将再次输入… 感谢名单; #include int main() { int a; scanf(“%d”,&a); while(!(a>=1&&a<=100)) { printf("wrong value entered. enter again\n"); scanf("%d",&a); } printf("you enter %d. Thanxz",a); return 0; }

在无限循环之前不会打印Print语句

在尝试调试一些C代码时,我注意到如果置于无限循环之前,printf()将不会执行。 有人知道为什么吗? 实际上它不是那么大的交易,但对于调试来说这是一场噩梦。 #include int main() { int data; printf(“This prints fine.\n”); printf(“Enter data: “); scanf(“%d”, &data); printf(“This should print but it doesn’t.\n”); while(1) { //Infinite Loop } return 0; }

scanf在C中导致无限循环

我对C比较陌生,但我已经编程了几年了。 我正在为一个大学课写一个程序,我很困惑为什么没有调用下面的scanf函数,导致无限循环。 我已经尝试将我的scanf放在函数外部,调用它两次,一次从内部,一次从外面,以及其他几种方式。 我在网上看到fflush可能有所帮助,但事实并非如此 有什么建议? // store starting variables int players; // print title printf(“*————————————*\n”); printf(“| |\n”); printf(“| Wheel |\n”); printf(“| of |\n”); printf(“| Fortune |\n”); printf(“| |\n”); printf(“*————————————*\n”); printf(“\n\nHow many players are there?: “); while(scanf(“%d”, &players) != 1 && players >= 0) { printf(“That isn’t a valid number of players. Try again: “); fflush(stdin); […]

当C中出现数组越界时,为什么我的程序不会进入无限循环

int main(){ int i; int arr[4]; for(int i=0; i<=4; i++){ arr[i] = 0; } return 0; } 我观看了一个关于CS107(第13讲)的video,其中显示了这个例子,并告诉我为什么上面的程序会通过显示内存图导致无限循环。 arr [4]超出界限,应该导致存储i的地址,并将i的值更改回0,从而导致无限循环。 但是当我尝试使用gcc编译器在我的mac上运行它时,for循环执行(通过插入printf检查)5次。 即对于i = 0,1,2,3,4的值。

无限循环中的return语句

如果返回语句位于此无限while(1)循环内,则返回语句返回何处? 更重要的是,我不知道while(1)循环可能被打破??? void __attribute__((interrupt, no_auto_psv)) _T3Interrupt(void) { int count; IFS0bits.T3IF = 0; // clear Tmr3 interrupt flag StopMotor(); IEC0bits.ADIE = 0; // disable ADC interrupt IEC0bits.CNIE = 0; // disable CN interrupt IEC0bits.T3IE = 0; // disable Tmr3 interrupt T3CONbits.TON = 1; // restart tmr3 count = 0; while (1) { if (IFS0bits.T3IF) { IFS0bits.T3IF […]

validationdo-while循环C中的输入类型

基本上,我需要确保输入是一个整数 ,如下所示: do { printf(“Enter > “); scanf(“%d”, &integer); } while (/* user entered a char instead of an int */); 我尝试了各种方法,但是当我尝试输入char时,它总是以运行时错误或无限循环结束。 我知道fflush(stdin)是一个未定义的行为,最好不要将它包含在我的代码中以防止任何错误加上它由于某些原因在VS2015中不再起作用 。 下面的代码是我尝试过的方法: typedef enum {false, true} bool; int ipt; char c; bool wrong_ipt; do { c = ‘\0’; printf(“Enter > “); scanf(“%d%c”, &ipt, &c); //infinite loop occurs while a char has been […]

为什么我的程序中存在无限循环?

int main(void) { int i; int array[5]; for (i = 0; i <= 20; i++) array[i] = 0; return 0; } 为什么上面的代码陷入无限循环?

C中的(空)无限循环未定义行为?

是for (;;);的无限循环for (;;); C中的未定义行为? (这是针对C ++的 ,但我不知道C.)