前提・実現したいこと
単純なfopenでファイルを開くことができません。
その理由として読み書き実行権限がないのかと思っているのですが、main.cのファイルから同じ階層のsample.csvファイルに書き込みをしたい場合にはどのようなコマンドになりますか。
chmod 777 sample.csv
これで大丈夫でしょうか。
また、他にファイルを開くことができない原因はあるのでしょうか。
エラー
ファイルの読み込みに失敗
該当のソースコード
void* User_Func(HPS3D_HandleTypeDef *handle,AsyncIObserver_t *event) { FILE *fp; fp=fopen("mesure.csv", "w"); if( fp != 0){ printf("ファイルの読み込みに失敗\n"); return 0; } fprintf(fp, "Hello!"); int indx = 0; if(event->AsyncEvent == ISubject_Event_DataRecvd) { switch(event->RetPacketType) { case SIMPLE_ROI_PACKET: printf("distance average:%d\n",event->MeasureData.simple_roi_data[0].distance_average); break; case FULL_ROI_PACKET: printf("distance average:%d\n",event->MeasureData.full_roi_data[0].distance_average); break; case FULL_DEPTH_PACKET: printf("distance average:%d\n",event->MeasureData.full_depth_data->distance_average); //printf("x:%d, y:%d, z:%d\n", event->MeasureData.point_cloud_data->point_data->x, event->MeasureData.point_cloud_data->point_data->y, event->MeasureData.point_cloud_data->point_data->z); for(int i=0; i<event->MeasureData.point_cloud_data->points; i++){ printf("x:%f, y:%f, z:%f\n", (event->MeasureData.point_cloud_data->point_data+i)->x, (event->MeasureData.point_cloud_data->point_data+i)->y, (event->MeasureData.point_cloud_data->point_data+i)->z); fprintf(fp, "%f,%f,%f\n", (event->MeasureData.point_cloud_data->point_data+i)->x, (event->MeasureData.point_cloud_data->point_data+i)->y, (event->MeasureData.point_cloud_data->point_data+i)->z); } break; case SIMPLE_DEPTH_PACKET: printf("distance average:%d\n",event->MeasureData.simple_depth_data->distance_average); break; case OBSTACLE_PACKET: break; case NULL_PACKET: break; default: printf("system error\n"); break; } } fclose(fp); // 1回計測して終了 exit(0); }
コードがないとどーしよーもないですね
仮想環境で作っているプログラムのファイルを、teratailで質問を書いている環境(PC?)にメール送信すれば、質問に追加できるのではないでしょうか?
> chmod 777 sample.csv
> これで大丈夫でしょうか。
やみくもな対応策の前にまず原因を確認しましょう。仮想環境とはlinux VMなどですか。dockerコンテナ上であったりしますか。
fopenのエラー後、errnoの値は何になっていますか。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/fopen.3.html
sample.csv が存在するディレクトリとsample.csv自体ののオーナーやグループ、権限はどのようになっていますか。
ls -l <sample.csvが存在するディレクトリ
ls -l <sample.csv自体>
すみません。記載できましたので、確認おねがいします。
ファイル名が"mesure.csv"ではなく、"measure.csv"だったりしませんか? 「測定」の英語は"measure"ですけど。(スペイン語やフランス語では"mesure"らしいですが)
まず、ファイルの存在を確認してみましょう。
すいません。スペルミスですが、名前は一致しています。