Hik021
2021-07-10 11:02
采纳率: 87.5%
浏览 41

对s[0]初始化,为何仍显示字符串中的字符无效?为何当i=0时,无法输入?

img

img

img

图三:比如输入n=4时,我只能输入的字符串数为3而非4
(第一次无法输入,为何?)
(为何当i=0时,getline无法输入,当但i>0时就可以?)

这是部分原码:

int count_p = 0, count_t = 0, count_a = 0, pos_p = 0, pos_t = 0;
int i;
char** s;
cout << "请输入字符串数" << endl;
int n;
cin >> n;
s = new char* [n];
for (i = 0; i < n; i++)
{
    s[i] = new char[11];
    cin.getline(s[i], 11);
}
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • soar3033 2021-07-10 11:37
    已采纳

    在cin.getline语句前加了getchar(),便解决了该问题,其实在输入a值时按了回车键, cin.getline读入了回车,于是回车被当作参数传递给了函数,将getchar()加到其前便可解决问题。

    img

    #include <iostream>
    #include<malloc.h>
    
    using namespace std;
    int main() {
        int count_p = 0, count_t = 0, count_a = 0, pos_p = 0, pos_t = 0;
        int i;
        char** s;
        cout << "请输入字符串数" << endl;
        int n;
        cin >> n;
        s = new char* [n];
        getchar();
        for (i = 0; i < n; i++)
        {
            s[i] = new char[11];
            cin.getline(s[i], 11);
        }
    }
    
    已采纳该答案
    打赏 评论
  • 浪客 2021-07-10 11:39

    上次输入的回车被getline读进去了

    int n;
    cin >> n;
    fflush(stdin);  //加上这一句,
    s = new char *[n];
    
    打赏 评论

相关推荐 更多相似问题