• ベストアンサー

txtファイルから値の取得方法 [C言語]

Trick--o--の回答

  • ベストアンサー
  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答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); エラー処理とか何も考えないで書いた。 文字列を直接変数名にするのは出来ないはず。

tiger2323
質問者

お礼

皆様の助言どおりに、さきほどプログラムを作成したところ上手くいきました。ありがとうございました!!

tiger2323
質問者

補足

コメントありがとうございます。 なるほど、文字列を直接変数名にするのは無理ですか。 Trick--o-- 様のプログラムを拝借させていただき、後ほどテストしてみようと思います。

関連するQ&A

  • C言語

    演算がうまくできなくてこまっています。 int hogeと定義した変数があります。 プログラムの途中で色々代入をし終えた結果、 printf(%d,hoge)とすると「49」と表示、 printf(%c,hoge)とすると「1」と表示されます。 %dは10進法のはずなのになぜか49となります。 今このhogeを用いて計算をしたいのです 例えば、hoge = hoge*5+1のように純粋に10進法で計算したのですが、 このままだと49*5+1=...となってしまします。 どうすれば改善出来ますか?

  • C++でファイル出力

    C++の初心者です。 あるデータをプログラムで計算し、それをファイル出力したいと考えております。 その際、10秒ごとに名前を変えてファイルを新規作成し出力ということはできるのでしょうか? たとえば、 int main(){ for(int i =0;i <10000; i++){ //cout << i << '\n'; /* ここでファイル出力をしたい */ /* 0から順に計算して改行し、出力 */ /* 最初は"hoge1.txt"に出力後、10秒ごとに"hoge2.txt"、 "hoge3..txt"と出力したい*/ /* hoge5.txtになったら終了 */ } } という感じです。 どなたか教えていただけませんでしょうか?

  • C言語のfloat型変数の値代入と表示について

    float型変数の値代入と表示について質問があります。 #include <stdio.h> int main(void) {  float flVal = 50.456;  printf("float型変数:%f", flVal);  return 0; } 上記を実行すると、「float型変数:50.456001」と表示されました。 また、float flVal = 50.1; と変えて実行すると、「float型変数:50.099998」と表示されました。 それぞれ期待していた結果は、 「float型変数:50.456000」、「float型変数:50.100000」だったのですが 代入した値と結果が微妙に異なる理由は何でしょうか。よろしくお願いします。

  • 【再確認】C言語のcharとvarcharの扱い

    すみません、前回も似たような質問をしましたが、再確認させてください。 例えば、変数1はサイズが256、型がvarchar、値がabcで、変数2はサイズが20、型がcharの場合、 変数1から変数2には値を直接代入できますか? また、代入できた場合、変数2の値はabc+スペース17桁になりますか? 逆に変数2の値がabcの場合、変数2から変数1には直接代入できますか? また、代入できた場合、変数2の値はabc(後ろにスペース等なし)になりますか?

  • awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか

    awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか。 ファイル(hoge.txt)の内容は、次の通り(全4行) 123 456 50 20 これを、bashスクリプトで計算させます。 FF=`cat hoge.txt | awk 'BEGIN {x=$2;printf ("%s, %s", (148+x*0.05), x);}'` echo "答え = ${FF}" このときの$2の値は、50です。但し、文字列として扱われているようです。 xの値を、数値として代入され、四則演算をさせるにはどうしたら良いですか? 以上、よろしくお願いします。

  • C言語、リダイレクト

    C言語の初心者です。 コマンドプロンプトで「./a.out <text.txt」とうつと、text.txtのデータを取得し、表示するプログラムをつくろうと思っています。 試行錯誤の結果 #include <stdio.h> main(){ char abc; scanf("%s",&abc); printf("%c",abc); } だとエラーもなくコンパイルできるのですが、肝心のファイルの中身が一文字までしか表示されません。 これはchar abcでabcを一文字だけの変数にしているからみたいですが、調べてみたのですがどうもここから先に進めません。 どこをどのように変えれば良いですか?お願いします。

  • 【VB2005】txtファイルからINIファイルみたいに読込む

    googleや、ITプロのサイトなどで VB2005のINIファイルもしくはXmlの読書きが理解できずに、 とりあえず、txtファイルから設定の読込みをしたいと考えてます。 ↓Text.txt↓の内容 [Mode] Mode=1 [SYSTEM] Menu1=登録処理 Menu2=保存処理 ・各、=(イコール)のあとの値を変数に代入したいと思ってます。  状況と、したいことが伝わりにくいかも知れませんが  ご口授お願いします。

  • C言語 テキストファイルの文字列を配列に代入したい

    aaa.txt というテキストファイルがあり、その中身が 8 5 21 13 であるとします(1行のみ)。 main関数内で宣言した整数の配列、 int A[10]; に対して、 A[0]=8 A[1]=5 A[2]=21 A[3]=13 のように代入したいのですが、どのファイルポインタの関数を使ってどのように書けばいいのかわかりません。 ご教授お願いします。

  • 変数の代入値を外部の.txtファイルから読む

    var AAA = "XXXX"; このように変数AAAにXXXXという値を代入したいのですが、XXXXは外部ファイルTEXTDATA.txt内にあります。 javascriptのみで、TEXTDATA.txtをオープンして文字列を取得することはできるのでしょうか? TEXTDATA.txt には XXXX 以外の文字はありません。 だれか回答できるかた、よろしくお願いします。

  • Cのポインタについて(関数への値渡し)

    C言語のポインタに関する質問です。関数に引数を渡す方法として以下の誤ったswap関数でなぜだめなのかいまいち得心できません。わかりやすくかみくだいて説明していただけると有り難いです。 できましたら、トレースともうしますか、変数の値の動きを詳細に段階的にプログラムの流れに沿って追っていって、だからこうなんだよ、みたいな解説がいただけたら有り難いです。わがままいってすみません。 /* 誤ったswap関数の宣言 */ void swap(int x, int y); int main(void) { int num1 = 5; int num2 = 10; printf("変数num1の値は%dです。¥n", num1); printf("変数num2の値は%dです。¥n", num2); printf("変数num1とnum2の値を交換します。¥n", num1); swap(num1, num2); printf("変数num1の値は%dです。¥n", num1); printf("変数num2の値は%dです。¥n", num2); return 0; } /* 誤ったswap関数の定義 */ void swap(int x, int y) { int tmp; tmp = x; x = y; y = tmp; } ---------- /* swap関数の宣言 */ void swap(int *pX, int *pY); int main(void) { int num1 = 5; int num2 = 10; printf("変数num1の値は%dです。¥n", num1); printf("変数num2の値は%dです。¥n", num2); printf("変数num1とnum2の値を交換します。¥n", num1); swap(&num1, &num2); printf("変数num1の値は%dです。¥n", num1); printf("変数num2の値は%dです。¥n", num2); return 0; } /* swap関数の定義 */ void swap(int *pX, int *pY) { int tmp; tmp = *pX; *pX = *pY; *pY = tmp; }