ショッピングモール  


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.3075

オプション指定
投稿者---hina(2004/11/26 16:13:35)


struct kouzoutai          
{
    time_t time_write;
    _fsize_t size;
    char name[254];
    unsigned attrib;
    struct kouzoutai *next;
};

struct kouzoutai *alloc(char *x);   
void print(struct kouzoutai *f);    
void kaihou(struct kouzoutai *ptr );

int main(int argc,char *argv[])
{
    struct kouzoutai *d_file;
    int i;
    char kakunou[260];
    d_file = NULL;
    
    for(i=1;i<argc;i++)
    {
        if(argv[i][0]=='-')
        {
            switch(argv[i][1])
            {
                case's':
            }
        }
        else
        {
            strncpy(kakunou,argv[i],259);
        }
    }
    
    d_file = alloc(kakunou);
    if(d_file == NULL)      
    {
            return 1;
    }

    print(d_file);
    kaihou(d_file);

    return 0;
}

struct kouzoutai *alloc(char *x)
{
    struct _finddata_t  e_file;
    struct kouzoutai *root;   
    struct kouzoutai *itr;    
    struct kouzoutai *b_file; 
    long        hFind;     

    root=NULL;
    itr=NULL;
    b_file=NULL;
    hFind=0;
    
    if((hFind = _findfirst(x, & e_file)) == -1L)
    {
        puts("一致するファイルが見つかりません。");
        return NULL;
    }

    do{
              
        b_file = (struct kouzoutai*)malloc(sizeof(struct kouzoutai));
        if(b_file == NULL)                      
        {
            puts("メモリが確保できませんでした。");
            return NULL;
        }
        b_file->size=e_file.size;
        b_file->time_write=e_file.time_write;
        b_file->attrib=e_file.attrib;
        strcpy(b_file->name,e_file.name);
        
        b_file->next = NULL;                     
        
        if( root == NULL )                       
        {
            root = b_file;
            itr = b_file;
        }
        else                                     
        {
            itr->next = b_file;
            itr = itr->next;
        }
    }while( _findnext(hFind, &e_file) == 0 );    
    _findclose(hFind);                           

    return root;
}

void print(struct kouzoutai *f)     
{
   puts("作成年月日 作成時刻     サイズ           ファイル名      属性");
    while( f )
    {
        struct tm* c_time = localtime(&(f->time_write));

        printf("%04d年%02d月%02d日 ", c_time->tm_year+1900, c_time->tm_mon+1, c_time->tm_mday);
        printf("%02d時%02d分%02d秒 ", c_time->tm_hour, c_time->tm_min, c_time->tm_sec);
        printf("%10d %20s      ", f->size, f->name);
        if(f->attrib & _A_ARCH)
            printf("A");
        else
            printf("-");
        if(f->attrib & _A_HIDDEN)
            printf("H");
        else
            printf("-");
        if(f->attrib & _A_RDONLY)
            printf("R");
        else
            printf("-");
        if(f->attrib & _A_SUBDIR)
            printf("D");
        else
            printf("-");
        if(f->attrib & _A_SYSTEM)
        {
            printf("S\n");
            continue;
        }
        else
            printf("-\n");
        f = f->next;
    }
}

void kaihou(struct kouzoutai *ptr )    
{
    struct kouzoutai *itr;
    while( ptr )
    {
        itr = ptr;
        ptr = ptr->next;
        free(itr);
        itr = NULL;
    }
}


すみません字下げ忘れてました。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:オプション指定 3077 もぐりん 2004/11/26 16:50:26


No.3077

Re:オプション指定
投稿者---もぐりん(2004/11/26 16:50:26)


No.3074のスレッドにコメントしないと意味不明になります。
それと、【掲示板ご利用上の注意】を読んで開発環境を提示してください。
要は、引数の数を見ればできると思いますが・・・。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity