配列の中に文字列を – プログラミング – Home

通知
すべてクリア

配列の中に文字列を

固定ページ 1 / 2

Search
 Search
(@Search)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

ユーザー入力で取得した文字列を配列の中に格納する場合、どのような書き方(プログラ
ム)がありますか?2次元配列でお願いします。


引用解決済
トピックタグ
さやぴ
 さやぴ
(@さやぴ)
ゲスト
結合: 18年前
投稿: 29
 

具体的に何が分からないのでしょうか?
プログラムを書いてね、って事でしょうか?

ご自身のためにも、少し書いてみて分からない事を質問した方がいいと思います。
(冷たい言い方でごめんなさい。)


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

具体的にどんな文字列があって、どのように格納するのですか?
それと、環境はきちんと明記してください。(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 ] );


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>scanf( %s%c, s[ 0 ] );
これ間違ってたっぽい。(たまたま動いているだけだと思う。)

訂正)
char c;

scanf( %s, s[ 0 ] );
scanf( %c, &c);


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

その scanf は変なのでは? %c がいらないというか。
改行を読み捨てたいのなら %*c かな


返信引用
Search
 Search
(@Search)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

すみませんでした。
VC++6.0を使ってます。

エディットボックスに入力した文字列を配列に格納しまして、それをテキストファイルか
なんかに書き込めるようにしたいです。
入力する内容は 番号 と 名前 です。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>エディットボックスに入力した文字列
を取得するには、GetWindowTextでしょうか。(MFCと非MFCでは違ってきますが)

で、どこが具体的にわからないのでしょうか?

>tetrapodさん
ご指摘ありがとうございました。
scanf系が使えないのがばれました。orz


返信引用
Search
 Search
(@Search)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

GetWindowTextで文字列を mo(変数) に入れておいて、それを配列の方に入れ替えたい
です。
変数に入れずに直接配列の方に入れられるならそうしたいのですが、どのように書いてい
いかわからないです。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

>変数に入れずに直接配列の方に
配列も変数だけど。何がいいたいのかわからん。

単純に CString 使っちゃダメなの?
CString s;
m_myEdit1.GetWindowText(s);

どうしても配列がよければ
TCHAR s[MAXLEN];
m_myEdit1.GetWindowText(s, MAXLEN);


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

適当サンプルにもあるように、一般的には strcpy か sprintf を使って格納してくださ
い。
(C++なら2次元配列なんて使わず、CStringArrayとかstd::vector< std::string >とか
の可変長文字列配列を使うと便利。)

それと、環境には MFC かどうかまで入れてくださいね。
> 環境はきちんと明記してください。(OS,VCのバージョン)
OSのバージョン抜けているし。
# デフォルトは Windows XP と考えていいのかな?


返信引用
Search
 Search
(@Search)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

std::vectorを使うとどのような構文になりますか?

OSはWindowsXPです。
あとMFCです。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> std::vectorを使うとどのような構文になりますか?

一例:

std::vector<std::string> inputs;
std::string user_input;
std::cin >> user_input;
inputs.push_back(user_input);


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

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


返信引用
わからない
 わからない
(@わからない)
ゲスト
結合: 18年前
投稿: 2
 

> std::vectorを使うとどのような構文になりますか?
vectorを知っておられる方がなぜこのような質問をするんだろう


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>vectorを知っておられる方がなぜこのような質問をするんだろう
名称を知っていても構文を知らないんじゃないかな

>ユーザー入力で取得した
それって、エディットボックス等から取得した値のことですか?
CString型からchar型の配列に変換するやり方がわからないのですか?
「GetLength()」で長さを求めて、「GetAt」で
配列に代入していくのがいいでしょうか?
もっといい方法あるかも知れませんが


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました