Скажите, что я хочу напечатать, используя
printf(format, "YYYYMMDD");
Как бы выглядел формат, если бы я хотел, чтобы мой вывод выглядел как "MM-DD-YYYY"?
Спасибо.
Позвольте мне добавить мой полный код, чтобы не было путаницы.
У меня есть структура, определенная как
typedef struct{
char *dt;
float op, hi, lo, cl, vl;
}STOCKDATA;
Затем вызовите функцию:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include "../include/struct.h"
#include "../include/function.h"
#include "../include/utility.h"
#define linemax 514
void stockData(char *ticker)
{
extern STOCKDATA *stockdata;
extern int nrows;
//count number of lines in file..............................
char *filename;
mkstring("../data/", ticker, filename);
nrows=linesInFile(filename);
//allocate stockdata.........................................
stockdata=malloc_stockdata(0,nrows-1);
//open file to read into stockdata...........................
FILE *fp;
fp = fopen(filename, "r");
if(fp==NULL)
{
printf("%s%s\n", "Can't open data file ", filename);
exit(1);
}
char delimiters[] = " ,";
char line[linemax];
char *tmp;
fgets(line, linemax, fp); //skip header
int count=0; //count number of lines
while( fgets(line, linemax, fp) !=NULL)
{
tmp=strtok(line, delimiters); //ticker (skipped)
stockdata[count].dt= strtok(NULL, delimiters); //date
//printf("%s\n", stockdata[count].dt);
stockdata[count].op=atof(strtok(NULL, delimiters)); //open
stockdata[count].hi=atof(strtok(NULL, delimiters)); //high
stockdata[count].lo=atof(strtok(NULL, delimiters)); //low
stockdata[count].cl=atof(strtok(NULL, delimiters)); //close
stockdata[count].vl=atof(strtok(NULL, delimiters)); //volume
count++;
}
fclose(fp);
}
Затем вызовите функцию:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "../include/struct.h"
#include "../include/function.h"
#include "../include/utility.h"
#define cutoff 10
void writeData(char *ticker)
{
extern STOCKDATA *stockdata;
extern int nrows;
//open output file........................................
char *filename;
mkstring("../output/", ticker, filename);
FILE *fp;
fp = fopen(filename, "w");
if(fp==NULL)
{
printf("%s%s\n", "Can't open data file ", filename);
exit(1);
}
int k;
char *format="%-15s%-10.2f%-10.2f%-10.2f%-10.2f%-10.0f\n";
for (k=nrows-cutoff; k<nrows; k++)
{
fprintf(fp, format, stockdata[k].dt,
stockdata[k].op,
stockdata[k].hi,
stockdata[k].lo,
stockdata[k].cl,
stockdata[k].vl );
}
fclose(fp);
}
Теперь, когда я определяю «формат» в последнем вызове функции, я пытаюсь заставить его печатать stockdata [k] .dt в формате MM-DD-YYYY. Строка в файле данных имеет формат ГГГГММДД.