- ベストアンサー
C言語で数値のみ抽出する方法
- C言語で数値のみ抽出する方法を知りたい。
- 数値のみ抽出は可能なようだが、具体的な方法がわからない。
- プログラムに数値を読み込ませるために、数値のみ抽出したい。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
失礼 m(_ _)m テレビ見ながら回答書いていたら、間違えて回答をクリックしてしまいました。 /* data.txt ファイルを読み込み buff[]の内容を左詰めでまとめる1回答例 ----- 実行結果 ----- 351.0 242.0 347.9 241.7 251.0 126.0 -1.0 -1.0 409.0 247.0 405.9 246.5 */ #include <stdio.h> char *str_token(char *); int main(void) { FILE *fp; char buff[128]; if((fp=fopen("data.txt","r"))!=NULL){ while(fgets(buff, 128, fp)!=NULL){ printf("%s\n", str_token(buff)); } fclose(fp); } return 0; } char *str_token(char *p) { char *t, *remember; t = remember = p; while(*p++ != '('); while(*p != ')' ) *t++ = (*p++ != ',') ? *(p - 1) : ' '; *t++ = ' '; while(*p++ != '('); while(*p != ')' ) *t++ = (*p++ != ',') ? *(p - 1) : ' '; *t = '\0'; return remember; }
その他の回答 (4)
- titokani
- ベストアンサー率19% (341/1726)
double v1,v2,v3,v4; fscanf(fp," ( %lf , %lf ) = %*d ( %lf , %lf ) = %*d ",&v1,&v2,&v3,&v4); かな?
お礼
ありがとうございます。
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
これは、初心者じゃ壁が高過ぎるんじゃないかなぁ。 とりあえず、ポインタを勉強すべし。 http://www9.plala.or.jp/sgwr-t/c/sec10-2.html /* buff[]の内容を左詰めでまとめる1回答例 ----- 実行結果 ----- 351.0 242.0 347.9 241.7 251.0 126.0 -1.0 -1.0 409.0 247.0 405.9 246.5 */ #include <stdio.h> char *str_token(char *); int main(void) { FILE *fp; char buff[128]; if((fp=fopen("yahoo6.c","r"))!=NULL){ while(fgets(buff, 128, fp)!=NULL){ printf("%s\n", str_token(buff)); } fclose(fp); } return 0; } char *str_token(char *p) { char *t, *remember; t = remember = p; while(*p++ != '('); while(*p != ')' ) *t++ = (*p++ != ',') ? *(p - 1) : ' '; *t++ = ' '; while(*p++ != '('); while(*p != ')' ) *t++ = (*p++ != ',') ? *(p - 1) : ' '; *t = '\0'; return remember; }
お礼
ありがとうございます。
- SaKaKashi
- ベストアンサー率24% (755/3136)
ぱっと見では位置は固定のようですが、固定ですか? 固定なら簡単に取り出せますね。
お礼
ありがとうございます。
- kmee
- ベストアンサー率55% (1857/3366)
いろんな方法がありますが、ひとまずは scanf / sscanf / fscanf のマニュアルをよく読んでください。(特に「書式」のところ)
お礼
皆様回答ありがとうございました。 当方へたれ理工でして…皆様の助言でかすかな知識をくっつけることができました。 勉強を促しご丁寧に回答まで付けてくださったhiroshi09sをベストアンサーに選ばせて頂きましたが、 皆様に感謝感謝です。 就活でSEしか通らなかったら死にそうです。そのときはまた質問させて頂くかもしれませんw ありがとうございました。
お礼
ありがとうございます。