1

私は持っている

printf("%12.8f, %12.8f, %6.3f, %04u/%02u/%02u   %i:%i:4.2f\n",sbet.longitude1,sbet.latitude1,sbet.altitude ,myyear,mymonth, myday, sbet.hour, sbet.minute, sbet.second);

If ステートメント内。そして、それはまさに私が欲しいものを1行ずつ生成します。しかし今、ヘッダー/タイトルを一番上に追加したいと思います。別の printf ステートメントを使用しますか? シンプルにやってみたところ

printf("Longitude,", "Latitude," "Elevation," , "UTC Time");

それは私が望んでいたものを私に与えませんでした。それは、他のprintfステートメントの残りのパラメーターとともに、各行に「経度」のみを配置しただけです。

基本的に私はこれを結果として持ちたい

Longitude,   Latitude,   Elevation,   UTC Time
-50.62596165,  67.01225899, 82.948, 2012/05/08   10:0:0.04
-50.62596152,  67.01225906, 82.949, 2012/05/08   10:0:1.04
-50.62596154,  67.01225906, 82.950, 2012/05/08   10:0:2.04
-50.62596148,  67.01225902, 82.951, 2012/05/08   10:0:3.04
-50.62596154,  67.01225907, 82.952, 2012/05/08   10:0:4.04
-50.62596160,  67.01225911, 82.952, 2012/05/08   10:0:5.04

これは完全なプログラムです (以下)。いくつかの if ステートメントが含まれています。入れてみた

printf( "Longitude, Latitude, Elevation , UTC Time\n");

両方の if ステートメントの前に、先頭に 1 行だけではなく、各行に 4 語のタイトルを付けて、同じ結果が得られました。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "applanix_data.h"
#include "applanix_pos_out.h"

#define DEGREES2RADIANS  (3.141592654 / 180.0)

int output_group_1(FILE *fp,
               FILE *fpout,
               unsigned short myyear,
               unsigned short mymonth,
               unsigned short myday,
               double time_sod,
               double double_time_met)
{
struct applanix_data_group1 data1;
struct pospacsbet sbet;

  if(fread(&data1,sizeof(struct applanix_data_group1),1,fp)==1)
 {
    sbet.gpstime = time_sod;
    sbet.latitude = data1.latitude * DEGREES2RADIANS;
    sbet.longitude = data1.longitude * DEGREES2RADIANS;
    sbet.altitude = data1.altitude;
    sbet.x_velocity = data1.eVelocity;
    sbet.y_velocity = data1.nVelocity;
    sbet.z_velocity = data1.dVelocity;
    sbet.roll = data1.aircraftRoll * DEGREES2RADIANS;
    sbet.pitch = data1.aircraftPitch * DEGREES2RADIANS;
    sbet.platform_heading = data1.aircraftHeading * DEGREES2RADIANS;
    sbet.wander_angle = data1.aircraftWanderAngle * DEGREES2RADIANS;
    sbet.x_body_acceleration = data1.aircraftTransverseAcceleration;
    sbet.y_body_acceleration = data1.aircraftLongitudinalAcceleration;
    sbet.z_body_acceleration = data1.aircraftDownAcceleration;
    sbet.x_body_angular_rate = data1.aircraftAngularRateAboutDownAxis;
    sbet.y_body_angular_rate = data1.aircraftLongitudinalAcceleration;
    sbet.z_body_angular_rate = data1.aircraftAngularRateAboutDownAxis;

    if(fwrite(&sbet,sizeof(struct pospacsbet),1,fpout)!=1)
      {
         fprintf(stderr,"Error writing POSPAC SBET output!\n");
         exit(-2);
      }

    sbet.latitude1 = sbet.latitude * (180/3.141592654);
    sbet.longitude1 = sbet.longitude * (180/3.14592654);
    sbet.day = sbet.gpstime/86400;
    sbet.time = sbet.gpstime/86400;
    sbet.hour1 = (sbet.time - sbet.day);
    sbet.hour = sbet.hour1*24;
    sbet.time = sbet.hour1*24;
    sbet.minute1 = (sbet.time - sbet.hour);
    sbet.minute = sbet.minute1*60;
    sbet.time = sbet.minute1 * 60;
    sbet.second1 = (sbet.time - sbet.minute);
    sbet.second = sbet.second1*60;

    printf("%12.8f, %12.8f, %6.3f, %04u/%02u/%02u   %i:%i:%4.2f\n",sbet.longitude1,sbet.latitude1,sbet.altitude,myyear,mymonth, myday, sbet.hour, sbet.minute, sbet.second);
    return 0;
 }
  else
 return -1;
}

私はこのように関数を呼び出します

unix> gcc -o applanixraw2out applanixraw2out.c

unix> ./applanixraw2out applanix_raw_20120508.bin > test.txt

4

4 に答える 4

3
printf("Longitude,   Latitude,   Elevation,   UTC Time\n");
于 2013-08-27T13:54:18.270 に答える
0

の前にif(fread ...、フォーマットされたヘッダーを使用します

printf("%-12s, %-12s, %-6s, %-12s\n", "Longitude", "Latitude", "Elevation", "UTC Time");

その後、ほとんどの場合に合わせて間隔を簡単に調整できます。

printf("%12.8f, %12.8f, %6.3f ...
于 2013-08-27T15:07:37.053 に答える
0
printf("Longitude, Latitude Elevation, UTC Time"\n);
于 2013-08-27T13:54:33.217 に答える