C++:这段输入几个字符串的代码为什么运行的时候错了?

要求:输入不超过30个的任意长度的字符串(不包括中文),每个字符串从键盘输入并以回车作为结束。
我的代码如下:

    char *a[30];
    int i, num;

for (i = 0; i < 30; i++){
    cin >> num;
    a[i] = new char[num];
    cin.getline(a[i], num);
}

for (i = 0; i < 30; i++){
    cout << a[i];
}

调试的时候系统没有报错,但运行的时候
c++

2个回答

要看你怎么输入的了,你先输入一个数字表示字符串的长度,注意,这个数字起码要比下一行输入的字符串的长度大1。因为字符串结尾需要一个\0,占1个元素。
另外,中文一个汉字占2个字节,要2个char。所以假设你想输入中国,那么第一行起码要5。

weixin_44125603
weixin_44125603 我在输入字符的时候没有超过规定长度,但按下回车后直接空了很多行停止程序。应该是运行出错,但我不知道错在哪里。cin.getline里可以用指针数组吗
一年多之前 回复

为何要用指针数组?
假如输入的是字符而不是数,用 int 变量怎么接收?
如果不用指针数组就可以了:
char a[30], num;
int i;

for (i = 0; i < 30; i++)
{
    cin >> num;
    a[i] = num;
    //cin.getline(a[i], num);
}
for (i = 0; i < 30; i++)cout << a[i];
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐