アプリ版:「スタンプのみでお礼する」機能のリリースについて

構造体で
氏名
年齢
住所
が入る変数を宣言しその構造体の配列を10人分用意しループで順番に入力してもらい氏名、住所、年齢に
空ENTERが入るとループを終了するということをしたいのですが。

全ての項目に空ENTERが入力されるとループを終了するという所をどのように書けばいいのかわかりません。
教えて下さい。

A 回答 (2件)

getline 関数を使えば一行の入力を丸々受け付けることができるので,Enter も取得することができます.


また,STL の string にある空かどうかを判別するメソッドを使うと,空文字かの判別も簡単に書けます.

ということで,以下のような感じでどうでしょうか?


//----------------------------------------------------------
#include <iostream>
#include <string>
using namespace std;


struct PrivateInfo
{
  string Name;
  string Age;
  string Address;
};


int main()
{
  const int maxSize = 10;
  PrivateInfo privateInfo[maxSize];

  for(int i = 0; i < maxSize; i++)
  {
    cout << i + 1 << " 人目の情報を入力して下さい" << endl;

    cout << "Name : ";
    getline(cin, privateInfo[i].Name);

    cout << "Age : ";
    getline(cin, privateInfo[i].Age);

    cout << "Address : ";
    getline(cin, privateInfo[i].Address);

    if(privateInfo[i].Name.empty() && privateInfo[i].Age.empty() && privateInfo[i].Address.empty())
      break;
  }

  return 0;
}
//----------------------------------------------------------
    • good
    • 0

#include <stdio.h>


#include <string.h>

void input(char *s, int max)
{
int l;

fgets(s, max, stdin);
if(s[l = strlen(s) - 1] != '\n') while(getchar() != '\n') ;
else s[l] = '\0';
}

int main(void)
{
char a[128], b[128], c[128];
int l;

do{
input(a, 128);
input(b, 128);
input(c, 128);
puts(a);
puts(b);
puts(c);
}while(a[0] || b[0] || c[0]);
return 0;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!