我在C++程序不會停止if(scanf()==EOF)break;
,下面是我的程序的素描,例如輸入:如果(scanf()== EOF)break,C++中的程序不會停止;
X XjhgXjhX
給輸出:
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;
}
我不想與閱讀\n
使用cin
,因爲麻煩。
我想你應該問一下用'cin'來解決你的問題。 – moooeeeep 2013-03-13 18:31:01
@moooeeeep但是'cin'和'\ n'問題呢?我更喜歡'scanf',因爲它真的更快。 – Qbik 2013-03-13 18:32:24
@Qbik:cin和'\ n'有什麼問題?對於上面的代碼,我懷疑你會看到任何性能差異。 C++流速較慢有兩個原因1)它們綁定到stdin/stdout(取消綁定它們變得更快)2)對流進行格式化讀取與本地人做了很多工作(所以你付出了工作)。如果你不關心這個,那就不要使用格式化的讀取。他們仍然稍微慢一點,但不是我認爲足夠擔心的事情。 – 2013-03-13 18:38:59