回 帖 发 新 帖 刷新版面

主题:一段程序问题

#include<iostream>

using std::cout;
using std::cin;
using std::endl;

#include<iomanip>

using std::setw;

#include<string>

using std::string;

int main()
{
  cout<<"please output some letters:"<<endl;
  char st[3];
  for(int i=0;i<3;i++)
  { 
     st[i] = getchar();
  
  }
 for(int j=0;j<3;j++)
 {
     putchar(st[j]);
     cout<<endl;
 }
 cout<<endl;
 return 0;

目的输入三个字符输出三个字符,为什么输出的是两个啊?烦劳那位解释一下,非常感谢

回复列表 (共5个回复)

沙发


你要连续输入,中间不要有空格

应当这样输入:

qwe

不要这样输入:

q w e

板凳

[quote]
你要连续输入,中间不要有空格

应当这样输入:

qwe

不要这样输入:

q w e[/quote]
认同这段结论!

3 楼


非常感谢啊!

4 楼

getchar 吃回车.或者这么做
int main(int, char **, char **)
{
    cout << "please output some letters:" << endl;
    char str[3];
    for (int ix = 0; ix < 3; ++ix)
    {
        cin >> str[ix];
    }
    for (int iy = 0; iy < 3; ++iy)
    {
        cout << str[iy];
        cout << "\n";
    }
    cout << endl;
    system("pause");

    return 0;
}
试试看

5 楼


因为你定义char st[3]
在你看来是这个数组里有3个字符,但是字符数组最后一个字符默认为'\0',占用了一个字符空间,表示数组的结束,所以你只能输入进去两个……

我来回复

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