- 締切済み
空ENTERの判別
構造体で 氏名 年齢 住所 が入る変数を宣言しその構造体の配列を10人分用意しループで順番に入力してもらい氏名、住所、年齢に 空ENTERが入るとループを終了するということをしたいのですが。 全ての項目に空ENTERが入力されるとループを終了するという所をどのように書けばいいのかわかりません。 教えて下さい。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- WizTaka
- ベストアンサー率53% (7/13)
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; } //----------------------------------------------------------
- yaemon_2006
- ベストアンサー率22% (50/220)
#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; }