• 締切済み

空ENTERの判別

構造体で 氏名 年齢 住所 が入る変数を宣言しその構造体の配列を10人分用意しループで順番に入力してもらい氏名、住所、年齢に 空ENTERが入るとループを終了するということをしたいのですが。 全ての項目に空ENTERが入力されるとループを終了するという所をどのように書けばいいのかわかりません。 教えて下さい。

みんなの回答

  • WizTaka
  • ベストアンサー率53% (7/13)
回答No.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; } //----------------------------------------------------------

回答No.1

#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; }

関連するQ&A