main関数内で使用する変数にtxtファイルから値を読み取り、それを代入する方法を探しております。
以下のようなシステムを製作したいと考えております。
(1)main内で定義した変数 int abc,bcd,cde;
(2)hoge.txtの内容が
/* txtファイルの中 */
abc 100
bcd 150
cde 200
/* --------------- */ というように記述
(3)mainでhoge.txt内の文字列"abc"を検索し、その後ろにある値100をabcに代入。次に"bcd"を検索し・・・というふうに値を代入していきたいと考えております。
まだ、C言語入門者なので説明不足な点もあるかと思いますが、よろしくお願いします。
No.3
- 回答日時:
> /* txtファイルの中 */
ですが、C言語のコメントと同様に扱えばよいのでしょうか?
その場合、文字コードは何でしょうか?
> mainでhoge.txt内の文字列"abc"を検索し
これは、コメント内に"abc"があっても、無視するのですよね?
この回答への補足
コメントありがとうございます。
申し訳ありません。コメントアウト部分の/**/は、実際のテキスト内にはありません。今回、テキストの中身の場所を示すために目印として使用しましたが、逆にわかりにくくなってしまいましたね。
ということで、hoge.txtの中身は、変数名とその値のみしか存在しないように設定したいと考えております。
例)
abc 100
bcd 150
cde 200
No.2ベストアンサー
- 回答日時:
FILE *fp;
char line[256];
int abc,bcd,cde;
char *token;
int n;
fp = fopen("data.txt","r");
while(fgets(line,256,fp) != NULL) {
token = strtok(line," \n");
n = atoi(strtok(NULL," \n");
if(strcmp(token,"abc") == 0) {
abc = n;
} else if(strcmp(token,"bcd") == 0) {
bcd = n;
} else if(strcmp(token,"cde") == 0) {
cde = n;
}
}
fclose(fp);
エラー処理とか何も考えないで書いた。
文字列を直接変数名にするのは出来ないはず。
この回答への補足
コメントありがとうございます。
なるほど、文字列を直接変数名にするのは無理ですか。
Trick--o-- 様のプログラムを拝借させていただき、後ほどテストしてみようと思います。
No.1
- 回答日時:
単純には、
fscanf (か、fgets とsscanf)で、文字列と数値を一行毎読み取り
文字列部分をstrcmp なんかで検索する文字列と一致するか調べて、代入するというような感じでイイと思います。
この回答への補足
早速のコメントありがとうございます。
Trick--o-- 様のプログラムを参考にBLUEPIXY様がおっしゃるような感じでプログラムを作成してみます。その際また問題点が出てきましたら、相談に乗っていただけるとありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
C言語 列挙型(enum型)変数について
-
processing エラーで、 "cannot...
-
テキストボックスの値を変数に...
-
umu *= 2;てどんな意味があるの...
-
[VBS]変数を定数に変換する方法...
-
【VBA】複合代入演算子
-
7行テトリスコードで分からな...
-
datagridviewに行...
-
Variant型で宣言してるのにEmpt...
-
整数xxxが大き過ぎますというエ...
-
i++と++i ってどう違うのですか?
-
画像のプログラムに関して質問...
-
C言語(高校1年の内容)について
-
Java認定試験3級の問題です。 ...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
エクセルへのデータの貼付時に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
EXCEL/VBA 変数の値をクリップ...
-
整数xxxが大き過ぎますというエ...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
jsp~jspにhiddenを使って変数...
-
processing エラーで、 "cannot...
-
python の 連鎖代入の文法
-
i++と++i ってどう違うのですか?
-
プログラミングで変数と関数の...
-
C言語 アロー演算子について質...
-
「%」を使って、偶数か奇数かを...
-
JavaScriptをURLから直接実行し...
-
VBA 1行で複数の代入を行った...
-
ExcelのVBAでをA列に第0〜19項...
-
無名関数のメリットがよくわか...
-
コマンドプロンプト バッチ|結...
おすすめ情報