トップページ⇒tech
22コメント8KB

その日の日付フォルダを作成するプログラム

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
プログラム初心者です。
MS−DOSでプログラミングしています。
汚いプログラムですけど、勘弁してください。
その日の日付フォルダ(yymmdd(yy=年,mm=月,dd=日))を作成するプログラムを
途中まで作成したのですけど、行き詰まってしまいました。
もしよければどなたか知恵をお貸しください。
よろしくお願い致します。

/* その日の日付フォルダ(yymmdd(yy=年,mm=月,dd=日))を作成するプログラム*/

#include<stdio.h>
#include<ctype.c>
main()
{
int c;
FILE *fin,*fout,*fin2;
char s[256];

system("date>date.txt");
if((fin=fopen("date.txt","r"))==NULL){
printf("date 読み込みエラー\n");
exit(1);
}
if((fout=fopen("hiduke.txt","w"))==NULL){
printf("hiduke 書き込みエラー\n");
exit(1);
}
while((c=fgetc(fin)=!EOF){ /*yymmddをファイルに書き込む*/
if(isdigit(c)){
fputc(c,fout);
}
}

if((fin2=fopen("hiduke.txt","r")==NULL{
printf("hiduke 読み込みエラー\n");
exit(1);
}
while((fgets(s,256,fin2))!=NULL){   /*yymmddを読み込む*/

system("md C:\▲ここにyymmddフォルダを作りたい▲");
0002デフォルトの名無しさんNGNG
↓のあたりの関数を使えばいいのでは。
time_t time( time_t *timer );
struct tm *localtime( const time_t *timer );
int sprintf( char *buffer, const char *format [, argument] ... );
0003デフォルトの名無しさんNGNG
>2
レスありがとうございます。
日付(yymmdd)の取得はできるのですが、その文字列(yymmdd)を
フォルダの名前にすることができないのです。
0004デフォルトの名無しさんNGNG
sprintf使うといいよ。
0005デフォルトの名無しさんNGNG
system("") ってのが何かなぁ…
ていうか typo 多し。
0006デフォルトの名無しさんNGNG
どーでも良いが
#include<ctype.c> -> #include<ctype.h>
00075NGNG
system 関数の引数は const char * なんだね。
単純に "md C:\yymmdd" を渡してやればいいんじゃない?
0008デフォルトの名無しさんNGNG
>>2、>>4
sprintf()よりstrftime()の方がいいんじゃない?
>>7
systemよりも、Win32なら_mkdir()、UNIXならmkdir()
で済むと思うんですが。
0009デフォルトの名無しさんNGNG
>7
レスありがとうございます。
その方法は試しましたが、渡せませんでした。

>8
もっともなんですけど、このプログラムを
いろいろ応用したいのです
00105NGNG
>>8
む、>>5 を読んで下さいませ(^^;
00115NGNG
>>9=1
\ → \\
ですね ("md c:\\yymmdd")。
00121NGNG
すいません。
>5
すいません。
ミスです。
\ → \\ に変えても無理でした。

system("xxxxxx")
system関数は""で囲まれた変数には代入できないです。
代入できれば、すべてが解決するのですが・・・
0013デフォルトの名無しさんNGNG
氏ね>1
00145NGNG
>>12
だ、代入?
もしかして printf みたいに system("md c:\\%s", string)
みたいのを期待してたの??

処理系にもよるんだろうけど、

int system(const char *string);

です。
(というか >>8 の言う通りにしといた方がいいっしょ)
0015デフォルトの名無しさんNGNG
char buf[256]="md " ;
strncat ( buf , s , 256 ) ;
system ( buf ) ;
何をしたいのか良く分かりませんが、一応書いておきます。
また、exec系が使えるなら、それからcommand.comを呼び出して、
同じような事も出来ると思うけど、あまりお勧めしません。
でも、他の方が言われるとおり、systemを使わなくて出来る事は、
systemは使わない方が良いですよ。
0016訂正(15)NGNG
>char buf[256]="md "
char buf[256]="md C:\\"
0017デフォルトの名無しさんNGNG
┌─────────┐
│                  │
│ ageないでください  │
│                  │
└―――──――――┘
     ヽ(´ー`)ノ
        (  へ)
        く
0018デフォルトの名無しさんNGNG
>>1
今回は答えを教えるから、二度とスレッドを立てないように。次に単発質問スレを
立てたり、このスレッドを age たら、首吊ってもらいます。

#include <stdio.h>
#include <time.h>
#include <direct.h>

int
main(void)
{
        char buf[16];
        time_t now;

        time(&now);
        strftime(buf, sizeof(buf), "C:\\%y%m%d", localtime(&now));
        if (mkdir(buf) == -1)
                perror(buf);

        return (0);
}
0019デフォルトの名無しさんNGNG
   ∧∧     ┌─────────────
  ( ´ー`)   < 1の身内はイネエカーヨ?
   \ <     └───/|────────
    \.\______//_______
      \    ∧∧ <イネエカーヨ?
       ∪∪(´ー`)_/| ̄ ̄ ̄
            UU-uU
0020デフォルトの名無しさんNGNG
>>19
そういや、この手のスレで身内が出てこなかったのは
極めて稀なケースだな(w
0021デフォルトの名無しさんNGNG
>>20
そうだな。
0022デフォルトの名無しさんNGNG
>>21
     ||
   Λ||Λ
  ( / ⌒ヽ
   | |   |
   ∪ 亅|
    | | |
    ∪∪
     :
     :

   ‐ニ三ニ‐


……だから、age るなと言ったのに。
■ このスレッドは過去ログ倉庫に格納されています