私はGPSからtxtファイルにいくつかのデータを保存しようとしています。問題はまずプログラムを停止した後に.txtファイルが空であったことですが、コードを実行すると無限の分岐に入り、画面または.txtファイルにデータを表示しないようになっています。fprintf空白のファイルを私に教えてください
char add_aux_XS[50],file_name_XS[256],file_txt_name_XS[256];
FILE *Ublox_text;
char * txt_file_UB() {
printf("Name of txt file (include extension txt): \n");
scanf("%s",file_name_UB);
strcpy(add_aux_UB,"/home/debian/Desktop/Comunicacion/gps/");
sprintf(add_UB,"%s%s",add_aux_UB,file_name_UB);
return add_UB;
}
main()
{
file_txt_UB=txt_file_UB();
for(i=0;i<256;i++){file_txt_name_UB[i]=*(file_txt_UB+i);}
Ublox_text=fopen(file_txt_name_UB,"w");
fprintf(Ublox_text,"\n");
Ublox_UART=Conf_Ublox();
while(1)
{
struct UBLOX_message Read_UB=Reading_UBLOX(Ublox_UART);
printf("Valid: %c \t lat: %lf \t lon: %lf \t north: %lf \t east: %lf \n",
Read_UB.valid,Read_UB.lat,Read_UB.lon,Read_UB.north,Read_UB.east);
fprintf(Ublox_text,"%c \t %lf \t %lf \t %lf \t %lf \n",
Read_UB.valid,Read_UB.lat,Read_UB.lon,Read_UB.north,Read_UB.east);
}
fclose(Ublox_text);
close_Ublox();
}
私はfprintf
行をコメントすると、プログラムがOKで、画面内にセンサ値を印刷します。
'for(i = 0; i <256; i ++){file_txt_name_UB [i] = *(file_txt_UB + i);}'で初期化されていない文字列をコピーすることは、実際にはそれを有効に初期化しません。あなたの 'text_file_UB()'関数は未定義の変数のすべての種類を使用しています - それは良くありません。あなたはMCVE([MCVE])の作成方法を読んだ後、質問が編集されるように編集する必要があります。 –