为什么输入流关闭了,测试输出是死循环了呢?

为什么输入流关闭了,测试输出是死循环了呢?大神们求解答

这个read(char[]);方法是一次读完的吧,完全不需要循环语句啊?第二次就返回-1了
char默认值不是空格!!是0x00 也就是小方块,不是空格!,你 append 了1000多个小方格字符,
建议你把read(char[]);第一次返回的长度作为append的参数:append(char[],0,真实长度)
还有,绝对不是死循环,否则根本运行不到println语句追问

这个问题怎么解决啊

在吗?

老是遇到这种问题,头大

温馨提示:内容为网友见解,仅供参考
无其他回答

为什么输入流关闭了,测试输出是死循环了呢?
还有,绝对不是死循环,否则根本运行不到println语句

...如果输入的不合法,那就将陷入死循环,为什么?如何理解?求高人指点...
接着while循环继续读输入缓冲区,依然类型不匹配,于是就成了死循环

为什么会死循环
= 1)显然当你输字符'q'之后,scanf返回的值不是1,所以继续循环,再下一次,读到一个残留在标准输入流里面的'\\n',返回值还不是1,继续循环,再下一次,scanf没有读到值,返回0,还是不等于1,继续,还读不到值,再继续,就一直循环下去了。你的程序不需要做大的改动,只要把while里面的测试条...

求各位大佬帮我解惑while和scanf()为什么会死循环 !!!???
只有当 while (条件)里 这句 通过,才有可能结束 循环。循环体内这句scanf()是多余的。只有在输入流是空的情况下,scanf() 才会 停顿,等待输入。当输入 a 时,输入流 里 有 信息,scanf() 就会做读操作,读来读去都是错,于是 反复做 循环。改成这样( 加上清空输入流):include <stdio....

这个程序为什么输入数字就是正常的,但输入一个字符就会陷入死循环!望...
因为类型不匹配。因为scanf返回0,因此cn的值是堆栈中的随机值,所以很难等于3.--- 谁说fflush不是C标准来的?它的实现的确根据库实现决定的。但在WINDOWS下,If the stream is open for input, fflush clears the contents of the buffer....

c语言 scanf("%d",&a);输入字符为什么会进入死循环?
研究过scanf函数是怎样接收整型数字的吗?它要跳过所有非数字的字符专接收数字。那么输入了字符它就一直留在输入缓冲区;只要缓冲区有字符,scanf就要去读,一读不是数字,它就跳过,试图等到输入缓冲区没有字符了才等待你输入……如此反复,当然就“死循环”了。为了验证,你在printf("you lose!!\\n")...

...当输入非数字时,为什么会出现死循环、怎么解决?
这个问题比较常见,因为输入一个字母后,此字符始终在缓冲区内(在上述情况下不会被cin读出,因为是个字母而不是数字) 所以要避免死循环,可以调用cin.ignore(1000, '\\n ');和cin.clear()。cin.clear()是清除输入流的状态,并不清除输入缓冲区。即 int a; cout<<"输入:";cin>>a;if(cin....

循环里的 scanner.nextInt()为什么不阻塞呢?
,不是nextInt()没有阻塞,是scanner把 “您输入的不是整数,请重新输入:”认为是你下次循环中所输入的内容,于是在抛错。因此就不停的抛出错误。只需把 System.out.println("您输入的不是整数,请重新输入:");continue;\/\/这里改成scanner.nextLine()把游标在换到下一行就行了 ...

C++ 为什么while(! iofile.eof() )读取文件会出现死循环
eof() 函数本身,并不到输入流里去取数,不去读取文件。单用 while(!iofile.eof()); 由于没有别的读语句去读文件,而自身又不会去读取文件,只是不断地判断 iofile的 EOF 标志位状态,那就永远是 "没有读到EOF". 死循环。中国教科书 一脉相承,爱用 while(!fp.eof()) { 读,打印;}...

cin和getline处理换行符的方法
这个while 是死循环。不断到输入流cin 的输入缓冲区去取字符串,字符串以广义空白(空白,tab等)为分隔符。所以打入 hello world,读到hello后的空白循环一次,读到world后的回车循环一次,然后等待。第二个程序,getline(cin,word),getline的第3个参数没有写,则用"\\n"作字符串分隔符,所以 打入...

相似回答