我试图将一些数据从GPS存储到txt文件。问题是,在停止程序之后首先.txt文件是空的,但是知道,当我运行代码时,它就像进入无限的bucle并且不会在屏幕或.txt文件中打印数据。
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
行时,程序正常,并在屏幕上打印传感器值。
答案 0 :(得分:1)
看起来很直接 - 我有一个无限的while (1)
循环,所以它永远不会结束。
如果您中止该程序,则所有缓冲的写入都被丢弃,因为从未到达fclose
。
你可以在循环中添加fflush()
,以便每次都能写入它,但这会大大减慢速度(有一个原因,操作系统通常会缓冲你所有的写作)。但更好的解决方案是纠正无限循环,因此它会在某个时间点结束。