C++;不';如果(scanf()==EOF)中断,则不会停止; C++中的程序不在上停止(如果(SCANFF)==EOF)中断;,下面是我的程序草图,例如输入: X XjhgXjhX
给出输出:C++;不';如果(scanf()==EOF)中断,则不会停止; C++中的程序不在上停止(如果(SCANFF)==EOF)中断;,下面是我的程序草图,例如输入: X XjhgXjhX,c++,windows,C++,Windows,给出输出: jhgjh 也就是说,它打印除X以外的所有字符,但不会在Ctrl+Z上停止 using namespace std; int main() { char str[100]={0},znak,forbd; int i=0,j=0; while(true) { i=0; j=0; if(scanf("%c",&forbd)==EOF) break; if
jhgjh
也就是说,它打印除X
以外的所有字符,但不会在Ctrl+Z
上停止
using namespace std;
int main()
{
char str[100]={0},znak,forbd;
int i=0,j=0;
while(true)
{
i=0;
j=0;
if(scanf("%c",&forbd)==EOF)
break;
if(scanf("%c",&znak)==EOF)
break;
while(znak!='\n')
{
if(forbd!=znak && znak!=' ')
{
str[i]=znak;
i++;
//cout<<i<<"\n";
}
if(scanf("%c",&znak)==EOF)
break;
}
while(j<i)
{
printf("%c",str[j]);
j++;
}
printf("%c",'\n');
}
return 0;
}
使用名称空间std;
int main()
{
char-str[100]={0},znak,forbd;
int i=0,j=0;
while(true)
{
i=0;
j=0;
if(scanf(“%c”,&forbd)=EOF)
打破
如果(scanf(“%c”,&znak)=EOF)
打破
而(znak!='\n')
{
如果(forbd!=znak&&znak!='')
{
str[i]=znak;
i++;
//cout好的,我将使用iostream
而不是cstdio
与codeif(cin.peek()='\n')break;
检测行尾,这就解决了问题。scanf从开关读取:
已知stdin不引用交互设备,流被完全缓冲。否则,默认情况下,流是行缓冲还是未缓冲取决于库(请参阅setvbuf)
通常,stdin是行缓冲的,您需要键入“\n”才能读取
从一个相关的例子中,你可以找到这种类型的字符读取用例的解决方案。我想你应该问一下如何用cin
解决你的问题。@moooeeep但是cin
和\n
问题呢?我更喜欢scanf
因为它真的更快。@Qbik:cin和有什么问题吗代码> > \n>代码>对于上述代码,我怀疑你在性能上有什么不同。C++流的速度较慢,原因有2)1)它们绑定到STDIN/STDUT(解除绑定,并且变得更快)2)流式读写与本地人做了更多的工作(因此,你支付工作费用)。如果您不关心这一点,那么就不要使用格式化读取。它们仍然稍慢,但不是我所说的值得担心的重要内容。上面的代码,在修复语法错误后,。可能是Windows的问题。找到它:检查stdin与std::cin的文章没有任何区别,只要您解除绑定: