回 帖 发 新 帖 刷新版面

主题:[讨论]为什么和我想的不一样呢?输入3,它就输出了yes,等待高手提点

[code=c]
#include <iostream>

using namespace std;

char str[51];

bool judge()
{
    if(isdigit(str[0]))
        return false;
    
    for(int i = 0;str[i]!='\0';++i)
        if(str[i]!='_'&&!isdigit(str[i])&&!isalpha(str[i]))
            return false;
    cout<<"I am here\n";    
    return true;
}

int main()
{
    int n;
    while(cin>>n)
    {
        while(n--)
        {               
            cin.getline(str, 51);
            cout<<"here\n";
            if(judge())
                cout<<"yes\n";
            else
                cout<<"no\n";
        }
    }
    return 0;
}
[/code]

为什么我输入一个3,它就输出了yes?
cin.getline()不需要等待输出吗?
高手指点啊,本人菜鸟的很

回复列表 (共1个回复)

沙发


  我运行了你的程序,说说我的看法。你的主程序开始就是cin>>n,于是当运行程序时我们就输入n的值3然后敲了回车键,而cin.getline()函数是遇到回车键便认为是终端输入结束,于是str[0]没有值,因此judge()返回true.
    建议你不要在while中用cin或者用这样的cin.getline(str,51,'!')避免与回车符发生冲突

我来回复

您尚未登录,请登录后再回复。点此登录或注册