• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 ; で区切った文字を別々の配列に入れる)

C言語で区切った文字を別々の配列に入れる方法

このQ&Aのポイント
  • C言語を勉強中の質問者が、文字列を「;」で区切り、それぞれを別々の配列に格納したいという問題を抱えています。
  • 質問者はfscanf関数を使用してファイルから一行ずつ読み込み、指定されたフォーマットにそって区切りたいと考えています。
  • しかし、現在の実装はスペースで区切られてしまい、望む結果を得ることができません。質問者はより良い関数やアイディアを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

エラー処理を考慮しないのであれば... fscanf(fp, "%29[^;];%29[^\n]%*c", eng, pir) のようにすれば実現できます。

maman19
質問者

お礼

できました!!!これだけで3時間くらい悩んだのに。。。ありがとうございました^^

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

> 調べるとfscanf(ファイル、フォーマット)という関数を見つけて、これだとフォーマットにそって、一行ずつ読んでくれるというのがわかりました。 「一行ずつ読む」というのは嘘、あるいは、初心者用に詳細を省略したいい方です。fscanfでは、実際は、殆どの場合で改行は空白と同じあつかいになります。 フォーマット文字列がわからないのなら、リファレンスマニュアルの該当項目をよく読みましょう。 他の言語の経験があるのなら、思い込みでCのプログラミングをするのは、とても危険なことです。 だから「マニュアルを読みましょう」質問はそのあとです。 特に、Javaの経験があるのなら、中途半端に似ているだけに、きちんと分けて覚えないと。 Javaでは意識しないでよかった、文字列操作やメモリ管理が重要になってきます。 その意味では、なぜ「今日から始めました」でこんな内容なのかが気になります。もうちょっと基礎の勉強をしてもよいのでは? > 関係ないですけど。C勉強してJAVAがものすごい大好きってことに気づきました 言語論争するつもりはないですが、こんなこと言うならJavaでやりゃいいじゃん、ってなりませんかね?

maman19
質問者

お礼

ご回答ありがとうございました。 フォーマットを読んだのですが、よくわからなかったので質問させていただきました。 これは、私が好きでやっているのではなくて、学校で出された課題についての質問です。授業が始まってすぐ出されて、自分でCを勉強しながら3日で仕上げなくてはいけないプログラムなので、基礎をしっかりと。。というのは分かるのですが、他のプログラムも書かなければいけないので、はっきりいって時間がありません。 Javaで全部かけるなら、最初から書いてます(´・ω・`) fscanfでは、殆どの場合で改行は空白と同じあつかいになる事がわかりました、ありがとうございました。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

これくらい(一行読んで分割)ならfgetsで読んでstrtokでもOKでしょう。

maman19
質問者

お礼

strtok()という関数があるんですね。これはこれからも使えそうなので、調べて、機会があればこのプログラムの中で使ってみたいと思います。Cはメモリーの事よくも考えないといけないんですね、、、難しいです。。。 ありがとうございました^^

関連するQ&A