C言語に関する質問です。 csvファイルを出力する際、そのファイル名に現在時刻を入力したいのですが、どのようにプログラムすればよろしいのでしょうか 例:2015年4月22日16時20分に出

C言語関連2,372閲覧

ベストアンサー

0

その他の回答(2件)

0

>ファイル名に現在時刻 これは面倒でムダな方法です。 例えばgetcmdという名前でコンパイルして、以下のようにしてください。 >getcmd "date /t" "time /t" すると、popenにより受け取ったコマンドを実行して、その結果を受け取れます。 *** #include<stdio.h> #include<stdlib.h> #include<string.h> #define BUF 256 int main(int argc, char *argv[]){ FILE *pp ;// pipe pointer char *cmdline ; char buf[BUF], tmp[BUF] = "", datetime[BUF] = "" ; //// コマンド if(argc!=3){// getcmd AAA BBB printf("argc: %d\n",argc) ; exit(EXIT_FAILURE) ; } int i; // http://kaworu.jpn.org/kaworu/2008-05-03-2.php for(i=0;i<2;i++){ cmdline = argv[i+1] ; if ( (pp=popen(cmdline,"r")) ==NULL) { exit(EXIT_FAILURE) ; } while(fgets(buf, BUF, pp) != NULL) { buf[strlen(buf)-1] = '\0' ;//改行削除 sprintf(tmp,"%s%s",tmp,buf) ; } pclose(pp) ; } //// 文字列解析 // http://www9.plala.or.jp/sgwr-t/lib/strtok.html char *tp;//token pointer char deli[] ="/: ";//delimiters tp = strtok( tmp, deli ); sprintf(datetime,"%s%s",datetime,tp); while ( tp != NULL ) { tp = strtok( NULL,deli ); if ( tp != NULL ){ sprintf(datetime,"%s%s",datetime,tp); } } sprintf(datetime,"%s%s",datetime,".csv"); //// ファイル作成 FILE *fp; if( (fp=fopen(datetime,"w")) == NULL ){ exit(EXIT_FAILURE) ; } fprintf(fp,"%s\ntest strings.\n",datetime); fclose(fp); return EXIT_SUCCESS ; }

0

#include<stdio.h> #include<stdlib.h> #include<time.h> int main(void) { FILE *fp; time_t timer; struct tm *local; struct tm *utc; char n[30]; timer=time(NULL); local=localtime(&timer); sprintf(n,"%4d%02d%02d%02d%02d.csv",local->tm_year+1900,local->tm_mon+1,local->tm_mday,local->tm_hour,local->tm_min); fp=fopen(n,"w"); fprintf(fp,"111\n"); fclose(fp); return 0; }