这两个二维数组为什么运行结果不一样啊

为什么第二个代码可以输入5行字符串,而第一个代码只能输入4行呢?


#include
#include
using namespace std;
int main(){
    int i,N;
    cin>>N;
    char a[N][100]={0};
    for(i=0;igetline(a[i],100);
    }
}
#include
#include
using namespace std;
int main(){
    int i,N;
    N=5;
    char a[N][100]={0};
    for(i=0;igetline(a[i],100);
    }
}

N你输入多少?可能是你输入N的值后,缓冲区里还有换行符,被第一个getline接收掉了
第一段代码,在cin>>N;之后,加上cin.get();接收掉换行符就可以了

因为你第一段代码里,输入N的值的时候会输入1个回车,这个回车符会留在缓冲区里,等你用getline读取数据的时候,就会读取这个回车。
把cin.getline(a[i],100);换成 cin >> a[i]; 就可以了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632