C++またはCで – プログラミング – Home

通知
すべてクリア

[解決済] C++またはCで


MEGU
 MEGU
(@MEGU)
ゲスト
結合: 21年前
投稿: 19
Topic starter  

C++またはCで
あるテキストに書いてある文を読み込んでそれを構造体として扱うにはどのようなプロ
グラムを書いたらよいか分からないので教えていただけませんか?
例  テキストファイルの内容
3 <-ここの数だけループを繰り返して下の言葉を読み込む
サクラ  <-この言葉を一つ一つを構造体として扱うにはどうすればよいのか
花火
水ようかん
例   出来たらいい構造体の中身
data[100]
data[1] = サクラ
data[2] = 花火
data[3] = 水ようかん
こんな感じですけど出来るでしょうか?構造体でなくても管理番号があればいいんです
けど。
よろしくお願いします。


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

あなたが書いたとおりのことをすればよいです。

1.ファイルを開きます。
2.一行読み、それを数値として、その数だけの要素を持つ配列を確保します。
3.読んだ数字の行数だけファイルから読み込み、2 で用意した配列に格納します。

ちなみに、構造体ではありません。配列です。

どういうコードを書いたらいいか教えてくれ、という質問は嫌われます。
コードは自分で書きましょう。ヒントをいくつか提示しておきます。

ファイルを開く / ファイルから一行読む / ファイルを閉じる
fopen 関数、fgets 関数、fclose 関数 など

文字を数値に変換する
itoa 関数 など

配列を動的に確保するのは後でいいです。
とりあえずは最大値を決めて固定長配列でできるようになりましょう。
あなたが書いたように data[100] とか。

それができたら、次はメモリの動的確保です。
malloc 関数、free 関数など


返信引用
MEGU
 MEGU
(@MEGU)
ゲスト
結合: 21年前
投稿: 19
Topic starter  

ありがとうございます。
できればもう少し詳しく教えていただけませんか?
その説明だと良く分からないでもう少し教えていただけませんか?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

「もう少し」とか「良く分からない」といった曖昧な表現を用いず、
どれが理解でき、どれが理解できないのか、
現状でどこまでできているのかなど、具体的に明確に質問しましょう。

また、「使用上の注意」を読み、開発環境を記載しましょう。

# 「良く分からないのでもう少し詳しく質問してください」
# なんて言われたら困りませんか?


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

間違いがありました。
> 文字を数値に変換する
> itoa 関数 など
itoa ではなく atoi でした。

で、大雑把に流れを示すと、こんな感じでしょうか。

ファイルハンドル = ファイルを開く(ファイル名);

char 行数を格納する変数[ 適当なサイズ ];
ファイルから一行読む(行数を格納する変数, ファイルハンドル);

int 読み込む行数 = 文字から数値に変換(行数を格納する変数);

char データを格納する変数[ 適当な数 ][ 適当な長さ ];

[ 読み込む行数 ]回、以下を繰り返す
繰り返しここから
 ファイルから一行読む(
  データを格納する変数[ 何回目の繰り返しか ], ファイルハンドル);
繰り返しここまで

// 読み込んだデータをどうするかはあなたのご自由に

ファイルを閉じる(ファイルハンドル);


返信引用
MEGU
 MEGU
(@MEGU)
ゲスト
結合: 21年前
投稿: 19
Topic starter  

一生懸命やっているのですけどどうにも一行読み込みが出来てないみたいで
Visual Studio .NET 2003でやってるのですけど
ステップトレース見ながらやってるのですけどどうにも読めないんです。
言われた事を理解しながらやってるつもりなんですけどね…


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

> ステップトレース見ながらやってるのですけどどうにも読めないんです。
> 言われた事を理解しながらやってるつもりなんですけどね…

でしたら……
・どういうコードを書いているか。
・どんな内容のファイルを読ませようとしているか。
・どのような結果を望んで、現在どうなっているか。
の3点を掲示して下さい。


返信引用
メイ
 メイ
(@メイ)
ゲスト
結合: 20年前
投稿: 16
 

>Visual Studio .NET 2003でやってるのですけど

[MFC]?
それとも[SDK]?

[MFC]なら[CFile][CStdioFile]辺りを調べてみると楽かも。


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

こんなんでいいのかしら?

#include <iostream>
#include <sstream>
#include <string>

int main() {

// 入力データ
std::string input = 3\n サクラ\n 花火\n 水 ようかん\n;
std::istringstream stream(input);

// 格納領域
std::string data[100];
int count;

// データ数を読む
stream >> count;
stream.ignore(1); // 改行を無視
// データをcount個読む
for ( int i = 0; i < count; ++i ) {
getline(stream, data[i]);
}

// 確認
for ( int i = 0; i < count; ++i ) {
std::cout << data[ << i << ]= << data[i] << std::endl;
}

return 0;
}


返信引用
MEGU
 MEGU
(@MEGU)
ゲスト
結合: 21年前
投稿: 19
Topic starter  

ありがとうございました
とりあいず出来ましたのでどうもみなさんにご迷惑おかけしました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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