ユーザー入力で取得した文字列を配列の中に格納する場合、どのような書き方(プログラ
ム)がありますか?2次元配列でお願いします。
具体的に何が分からないのでしょうか?
プログラムを書いてね、って事でしょうか?
ご自身のためにも、少し書いてみて分からない事を質問した方がいいと思います。
(冷たい言い方でごめんなさい。)
具体的にどんな文字列があって、どのように格納するのですか?
それと、環境はきちんと明記してください。(OS,VCのバージョン)
適当)
char s[ 8 ][ 255 ] = { 0 };
int i;
// scanf
scanf( %s%c, s[ 0 ] );
// fgets
fgets( s[ 1 ], 255, stdin );
s[ 1 ][ strlen( s[ 1 ] ) - 1 ] = '\0';
// strcpy
strcpy( s[ 2 ], strcpyです。 );
// sprintf
sprintf( s[ 3 ], %s, sprintfです。 );
// sscanf
sscanf( sscanfです。, %s, s[ 4 ] );
// strcat
s[ 5 ][ 0 ] = '\0';
strcat( s[ 5 ], strcatです。 );
// memcpy
memcpy( s[ 6 ], memcpyです。, strlen( memcpyです。 ) + 1 );
// fscanf
fscanf( stdin, %s, s[ 7 ] );
// 表示
puts( -------------------- );
for ( i = 0; i < 8; i++ )
printf( %s\n, s[ i ] );
>scanf( %s%c, s[ 0 ] );
これ間違ってたっぽい。(たまたま動いているだけだと思う。)
訂正)
char c;
scanf( %s, s[ 0 ] );
scanf( %c, &c);
その scanf は変なのでは? %c がいらないというか。
改行を読み捨てたいのなら %*c かな
すみませんでした。
VC++6.0を使ってます。
エディットボックスに入力した文字列を配列に格納しまして、それをテキストファイルか
なんかに書き込めるようにしたいです。
入力する内容は 番号 と 名前 です。
>エディットボックスに入力した文字列
を取得するには、GetWindowTextでしょうか。(MFCと非MFCでは違ってきますが)
で、どこが具体的にわからないのでしょうか?
>tetrapodさん
ご指摘ありがとうございました。
scanf系が使えないのがばれました。orz
GetWindowTextで文字列を mo(変数) に入れておいて、それを配列の方に入れ替えたい
です。
変数に入れずに直接配列の方に入れられるならそうしたいのですが、どのように書いてい
いかわからないです。
>変数に入れずに直接配列の方に
配列も変数だけど。何がいいたいのかわからん。
単純に CString 使っちゃダメなの?
CString s;
m_myEdit1.GetWindowText(s);
どうしても配列がよければ
TCHAR s[MAXLEN];
m_myEdit1.GetWindowText(s, MAXLEN);
適当サンプルにもあるように、一般的には strcpy か sprintf を使って格納してくださ
い。
(C++なら2次元配列なんて使わず、CStringArrayとかstd::vector< std::string >とか
の可変長文字列配列を使うと便利。)
それと、環境には MFC かどうかまで入れてくださいね。
> 環境はきちんと明記してください。(OS,VCのバージョン)
OSのバージョン抜けているし。
# デフォルトは Windows XP と考えていいのかな?
std::vectorを使うとどのような構文になりますか?
OSはWindowsXPです。
あとMFCです。
> std::vectorを使うとどのような構文になりますか?
一例:
std::vector<std::string> inputs;
std::string user_input;
std::cin >> user_input;
inputs.push_back(user_input);
>std::vectorを使うとどのような構文になりますか?
MFCならCStringArrayを使ったほうがいいと思うんだけど。
CStringArray saveFileText;
CString text;
this->GetDlgItemText( IDC_EDIT1, text );
saveFileText.Add( text ); // 追加
this->GetDlgItemText( IDC_EDIT2, text );
saveFileText.Add( text ); // 追加
// 表示(本来は保存)
for ( int i = 0; i < saveFileText.GetSize(); ++i )
{
AfxMessageBox( saveFileText.GetAt( i ) );
}
> std::vectorを使うとどのような構文になりますか?
vectorを知っておられる方がなぜこのような質問をするんだろう
>vectorを知っておられる方がなぜこのような質問をするんだろう
名称を知っていても構文を知らないんじゃないかな
>ユーザー入力で取得した
それって、エディットボックス等から取得した値のことですか?
CString型からchar型の配列に変換するやり方がわからないのですか?
「GetLength()」で長さを求めて、「GetAt」で
配列に代入していくのがいいでしょうか?
もっといい方法あるかも知れませんが