Tag: while loop

而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(如果重要的话)。 有任何想法吗?

ncurses,print和contemporary获取字符串

用C编写的程序使用ncurses 。 while循环用于连续检查队列中是否有新消息到达:如果是,则消息将打印在屏幕上,然后从队列中删除: while (condition) { if (queue_not_empty) { printw(element_from_queue); refresh(); remove(element_from_queue); } } 但是,同时程序应该能够从用户获取输入字符串,然后通过scanw将其存储在数组char message[100] 。 但是,如果我把 while (condition) { if (queue_not_empty) { printw(element_from_queue); refresh(); remove(element_from_queue); } scanw(message); } 循环将停止,直到用户没有键入字符串,程序将仅在用户输入后打印队列的新消息。 它应该不是这样的! 队列消息可以随时到达,应该打印; 用户消息可以随时到达,并应存储到数组中。 我想避免创建另一个线程,因为ncurses对多个线程变得奇怪。 无论如何,我需要两个“当代”循环,一个用于打印消息,一个用于读取用户输入。 可能有解决方案吗? 换句话说:是否可以使用ncurses打印一些输出并从同一个屏幕中的同一个线程中的用户输入一些多个字符 ?

scanf()in while循环没有终止?

我有一个while循环,它扫描一组输入整数。 它扫描并打印所有数字,最后带有“…”,然后跳到下一行。 但是,脚本不会:执行while循环并打印TEST。 例如,我输入:3 44 62 1 打印:3 …… 44 … 62 … 1 … 什么时候打印:3 …… 44 … 62 … 1 … 测试 while(scanf(“%d”, &n) != -1) { x[i] = n; i++; printf(“%d”, n); printf(“…\n”); } printf(“TEST”); 我究竟做错了什么?

c等待stdin读?

在我的应用程序中,我试图实现这样的事情: 我有: 数据0,数据1,数据2,…数据n。 一些参数传递 流: 使用一些参数启动程序并将数据0写入stdin 程序根据传递的数据“数据0”和参数进行计算 “等待”新的stdin和(清除旧的stdin,缓冲区和变量?) 当我输入数据1,数据2 ……等时重复1~2 当到达数据n时,终止(或者如果我输入一个中止代码到stdin告诉程序终止)。 也许是这样的?(伪代码): int main(int argc, char *argv[]) { get parameters(); int fslen = data size char *c = (char *)malloc(fslen); fgets(c, fslen, stdin); while((c != null) || (c != Terminate code?)) { do calculations with int c; clear c; } return 0; } 或者他们是一个更好的方法? 或者这样做是不好的做法? […]

在北美野牛解析一个while循环

在Bison中实现简单while循环的最佳方法是什么? 如果它有所作为,我使用C,但我也可以使用C ++。

C – fscanf in while循环跳过用户输入

所以我运行程序,它执行打印,从键盘读取我键入的字符,切换到适当的情况,但不是返回到循环的顶部并停止在fscanf以接收进一步的输入,它的行为就像它已经收到一个新的线或什么东西并切换到默认情况,再次返回到循环的顶部并期待输入。 我错过了什么? 这是代码: #include #include #include int main () { char *command; command = malloc (2); while (1) { printf (“Type help for usage\n”); printf (“Enter command: \n”); fscanf (stdin,”%c”,command); switch (command[0]) { case ‘a’: printf (“a\n”); break; case ‘h’: printf (“help\n”); break; default: printf (“default\n”); } } return 0; }

使用带有while循环的kbhit()

这是该计划。 void main( ) { int h, v; h = 1; v = 10; while ( !kbhit( ) || h <= 80 ) { gotoxy( h, v ); printf( "” ); delay( 200 ); clrscr( ); h = h + 1; } getch( ); } 我在C中创建一个程序,我在其中使用kbhit()来运行循环,直到按下一个键。 所以这里箭头””将继续向前移动直到按下一个键或直到它到达屏幕的最后一个像素。 我想要的是程序应该在每次按下’d’将h递增1并且每按一次’a’递减1。 即h++; 和h–; 并运行另一个循环,直到按下一个字符。 这个想法更像是蛇游戏,其中蛇一直向某个方向移动,直到按下一个键。 请帮忙!

如何根据用户输入退出片刻(1)?

我有一个简单的server-client终端。 服务器从客户端接收字符串并对其进行处理。 服务器只有在收到end_of_input字符后才会开始处理,在我的情况下是’&’ 。 下面的while循环旨在允许用户输入许多不同的字符串,并且应该在收到’&’停止执行。 while(1) { printf(“Enter string to process: “); scanf(“%s”, client_string); string_size=strlen(client_string); //I want to escape here if client_string ends with ‘&’ write(csd, client_string, string_size); } 我怎么能这样做,以便在用户输入end_of_input字符’&’后,while循环退出?

Xcode-C编程 – 循环

我在Xcode中有一个与“while”循环相关的错误/警告。 有关如何解决它的任何建议? while ( (c=getchar() != ‘\n’) && c != EOF); 虽然循环有空体 IDE中的图片:

具有While循环的有效C ++代码的等效C代码无法编译

包含while循环的以下代码在C ++中编译。 #include using namespace std; int main() { while (int i = 5) { break; } return 0; } 但是,如果在C中编译,则以下等效的C代码会导致错误: #include int main() { while (int i = 5) { break; } return 0; } 编译器输出: > prog.c: In function ‘main’: prog.c:5:9: error: expected expression > before ‘int’ while (int i = 5)prog.c: In […]