我正在尝试将 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
行时,程序正常并在屏幕上打印传感器值。
最佳答案
对我来说似乎很简单 - 你有一个无限的 while (1)
循环,所以它永远不会结束。
如果中止程序,所有缓冲的写入都会被丢弃,因为 fclose
从未达到。
您可以在循环内添加一个 fflush()
,以便每次都写入它,但这会大大减慢速度(操作系统通常会缓冲您的所有写入是有原因的)。但更好的解决方案是纠正无限循环,使其在某个时间点结束。
关于c - fprintf 给我一个 c 中的空白文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39522480/