Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;不';如果(scanf()==EOF)中断,则不会停止; C++中的程序不在上停止(如果(SCANFF)==EOF)中断;,下面是我的程序草图,例如输入: X XjhgXjhX_C++_Windows - Fatal编程技术网

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
与code
if(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的文章没有任何区别,只要您解除绑定: