• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:RT-LInuxでのテキストファイルの読み込み方法がわかりません)

RT-LInuxでのテキストファイルの読み込み方法がわかりません

このQ&Aのポイント
  • RT-LInuxを使用してロボットの制御を研究している際に、モジュールのスレッド内でテキストファイルをオープンし、読み込み、データを配列に格納しようとするとエラーが発生します。
  • エラーの原因は、モジュール内でファイル操作が制限されている可能性がありますが、具体的な根拠や別の解決方法がわからず困っています。
  • 他の方法としては、Linuxプロセスでファイルを開き、RT-FIFOを通じてデータをモジュールに送る方法が考えられますが、具体的な手順が不明です。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.5

★アドバイス >しかし、その根拠もなく、また別の方法もわからず、今回質問をさせていただきました。 >ちなみにこのような書き方でプログラミングを行ってます。  これって、基本的な文法が正しく理解していない。だけですよ。 ・ロボットの制御は行ったことがありませんが、C言語を利用しているのであれば  まずテキスト本を用意してファイルの読み書きの基本をしっかりと覚えて下さい。  それから文字定数、文字列定数も区別して下さい。 ・回答者No.1~No.3さんがアドバイスしていますが、'r'も文字列ですので"r"とします。  それから fscanf() 関数の『dat』はfloat型の変数ですよね。  ちゃんと宣言しましたか?  指定ないと利用できません。  下にサンプルを載せておきます。 サンプル: FILE *fp; float dat; ←これを宣言行に追加。 if ( (fp = fopen("h.txt","r")) == NULL ){  printf( "Can't opening this file\n" );  exit( 1 ); } fscanf( fp, "%f", &dat ); fprintf( fp, "%f \n", dat ); ←これは必要か? fclose( fp ); fprintf()の行はファイルに書き込む指定です。 fp は読み込み専用でオープンしているので書き込めません。 読み書き両用でオープンするなら"r+"として下さい。 >インターネットや資料を探してみたのですが、 >いまいちよくわからなかったので、 >もしこれを御覧になった方で、何かご存じの方は、教えていただけたら、ありがたいです。  次のサイトを利用して下さい。  http://www9.plala.or.jp/sgwr-t/index.html→『初心者のためのポイント学習C言語』  このサイトの『第17章 ファイル入出力』が参考になります。  http://www9.plala.or.jp/sgwr-t/c/sec17.html→『第17章 ファイル入出力』 ・最後まで読みましょう。

参考URL:
http://www9.plala.or.jp/sgwr-t/c/sec17.html

その他の回答 (4)

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.4

>しかし、その根拠もなく、また別の方法もわからず、 せっかくエラーメッセージが出力されているというのに それを完全に無視して、勘に頼っているのでは原因究明 も問題解決もできるはずがありません。 >ひとつ「もしかしたら・・・」という方法があります。 makeの時点でエラーが出ているので全く関係ありません。 基本的なC言語の構文が十分に理解できていない事が原因 です。 >インターネットや資料を探してみたのですが、いまいち >よくわからなかったので・・・ 横着せずに英和辞書片手に訳しましょう。 原因が判らないまま、単に回答された通りにしたら動いた だけで済ませていては再発防止する事もできません。

  • aid-u
  • ベストアンサー率75% (22/29)
回答No.3

No.2ですが間違っています。 if(fopen("h.txt",'r') == NULL){ は、 if((fp = fopen("h.txt",'r')) == NULL){ です。

pon-po-po
質問者

お礼

ありがとうございます。 ご指摘の通りにした結果、さらにファイル関係のエラーがなくなりました。 他のエラー文などがあるのですが、 '変数名' undeclared.(first use in this function) (each undeclared identifier is reported only once for each function it appears in.) '変数名' control reached end of non-void function warning : unused variable '変数名' warning : function declaration isn't a prototype. warning : data definition has no type or storage class. といった感じの表示が多かったです。 とりあえず、ファイル云々の関係ではなさそうです。 まだちょっと解読中で、プログラミングとにらめっこしてます。(笑)

  • aid-u
  • ベストアンサー率75% (22/29)
回答No.2

fopen関数の部分が間違っているようです。 if((fopen=="h.txt",'r') == NULL){ は、 if(fopen("h.txt",'r') == NULL){ ですよね。 これでどうなるでしょうか?

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

取り合えず、 #include <stdio.h> を追加して下さい。 if((fopen=='h.txt','r') == NULL){ は、 if((fopen=="h.txt",'r') == NULL){ にしてください。(ファイル名はダブルクオートでくくる) それで、どうなりますか?

pon-po-po
質問者

お礼

ありがとうございます。 ご指摘の通りにした結果、ファイル関係のエラーがなくなりました。 しかし結果的に新たなエラーがたくさん出てきましたが・・・。笑 でも問題がひとつ解決したのは確かなので、まずは一歩前進です。 新たに出てきた問題は、もう少し自分で調べてみます。 大変ありがとうございました。

関連するQ&A