C++ c+的初学者问题+;

C++ c+的初学者问题+;,c++,string,cin,C++,String,Cin,该程序设计用于获取一个整数和一个少于15个字符的名称,并将其存储在数组中 当输入0时,程序显示数组的内容,然后终止。显然,这里有点不对劲 #include <iostream> #include <iomanip> using namespace std; bool getInput(int*, char(*)[15]); void giveOutput(int*, char(*)[15]); int main(void) { bool repeat = tr

该程序设计用于获取一个整数和一个少于15个字符的名称,并将其存储在数组中

当输入0时,程序显示数组的内容,然后终止。显然,这里有点不对劲

#include <iostream>
#include <iomanip>
using namespace std;

bool getInput(int*, char(*)[15]);
void giveOutput(int*, char(*)[15]);

int main(void)
{
    bool repeat = true;
    int number[100] = {0};
    char name[100][15];
    do
    {
        repeat = getInput(number, name);
    } while(repeat);
    giveOutput(number, name);
    return 0;
}

void giveOutput(int* number, char(*name)[15])
{
    int i = 0;
    while(number[i] != 0)
    {
        cout << endl << i << setw(6) << name[i];
        i++;
    }
    cout << endl << endl;
    return;
}

bool getInput(int* number, char(*name)[15])
{
    int temp;
    int i = 0;
    for(; number[i] != 0; i++);
    cin >> temp;
    if(temp == 0)
        return false;
    number[i] = temp;
    cin.getline(name[i], 15, '\n');
    cin.clear();
    cin.ignore(512, '\n');
    return true;
}
#包括
#包括
使用名称空间std;
bool getInput(int*,char(*)[15]);
输出无效(int*,char(*)[15]);
内部主(空)
{
布尔重复=真;
整数[100]={0};
字符名[100][15];
做
{
repeat=getInput(编号、名称);
}同时(重复);
给定输出(编号、名称);
返回0;
}
输出无效(整数*数字,字符(*名称)[15])
{
int i=0;
while(数字[i]!=0)
{

cout这是一个有效的版本:

#include <iostream>
#include <iomanip>
using namespace std;

bool getInput(int*, char(*)[15]);
void giveOutput(int*, char(*)[15]);

int main(void)
{
  bool repeat = true;
  int number[100] = {0};
  char name[100][15];
  do
  {
    repeat = getInput(number, name);
  } while(repeat);
  giveOutput(number, name);
  return 0;
}

void giveOutput(int* number, char(*name)[15])
{
  int i = 0;
  while(number[i] != 0)
  {
    cout << endl << number[i] << setw(6) << name[i];
    i++;
  }
  cout << endl << endl;
  return;
}

bool getInput(int* number, char(*name)[15])
{
  int temp;
  int i = 0;
  for(; number[i] != 0; i++);
  cin >> temp;
  if(temp == 0) return false;
  number[i] = temp;
  cin.getline(name[i], 15, '\n');
  cin.clear();
  //cin.ignore(512, '\n');
  return true;
}
#包括
#包括
使用名称空间std;
bool getInput(int*,char(*)[15]);
输出无效(int*,char(*)[15]);
内部主(空)
{
布尔重复=真;
整数[100]={0};
字符名[100][15];
做
{
repeat=getInput(编号、名称);
}同时(重复);
给定输出(编号、名称);
返回0;
}
输出无效(整数*数字,字符(*名称)[15])
{
int i=0;
while(数字[i]!=0)
{

我不欢迎堆栈溢出。您应该知道,通常用户希望人们在他们的问题上付出一些努力。如果您说明问题的确切原因以及您尝试了什么,您将获得更好的机会。在您的情况下,您似乎是从使用调试器开始的。尝试使用调试器,如果您仍然有问题,请返回更多详细信息ble。只是为了帮助设置问题格式。尽量使用较小的代码片段,而不是整个代码片段。描述程序的用途以及它在问题中如何不起作用将对试图帮助您的人有很大帮助。对于初学者,您的输出函数只会输出您的索引(
i
)还有name.the
cin.clear
调用不是很有用,除非您确实在检查错误条件。