ショッピングモール  


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

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

 詳しくはこちら



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

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


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

No.3093

引数
投稿者---hina(2004/11/29 12:07:35)


argv[1]番目に*.cを渡すと.cのファイル情報が表示されるのに*.obj又は*.exeを渡してもうまくファイル情報が表示されません。何が原因なのでしょうか。
開発環境はWindows2000sp4/VC++6.0sp/Consol-Appです。
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,char *ji);
void kaihou(struct kouzoutai *ptr );

int main(int argc,char *argv[])
{
struct kouzoutai *d_file;
int i;
int z;
char moji[3];
char kakunou[260];
d_file = NULL;
z=0;

for(i=1;i<argc;i++)
{
if(argv[i][0]=='-')
{
switch(argv[i][1])
{
case 's':
strcpy(moji,"-s");
strcpy(kakunou,"*.*");
}
}
else
{
z=strlen(argv[i]);
strncpy(kakunou,argv[i],z);
}
}

d_file = alloc(kakunou);
if(d_file == NULL)
{
return 1;
}

print(d_file,moji);
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,char *ji)
{
struct tm *c_time;
puts("作成年月日 作成時刻 サイズ ファイル名 属性");
while( f )
{
if(ji)
{
if(f->attrib & _A_SYSTEM)
{
f=f->next;
continue;
}
}
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");
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:引数 3094 REE 2004/11/29 13:43:46
<子記事> Re:引数 3097 もぐりん 2004/11/29 15:56:31


No.3094

Re:引数
投稿者---REE(2004/11/29 13:43:46)


>argv[1]番目に*.cを渡すと.cのファイル情報が表示されるのに*.obj又は*.exeを渡してもうまくファイル情報が表示されません。何が原因なのでしょうか。

※ソースの添付は「HTML変換ツール」で字下げ!
※環境(OSとコンパイラ)や症状は具体的に詳しく!



この投稿にコメントする

削除パスワード

No.3097

Re:引数
投稿者---もぐりん(2004/11/29 15:56:31)


No.3078のスレッドの続きなんでしょ。
なぜ、新規にスレッドを立てるかな?
それとソースを提示する場合は、インクルードファイルの部分を入れないと
コンパイルが通らないはず。
あなたのソースを実行すると、引数としてCソース名を渡しても必ず
「一致するファイルが見つかりません。」
と表示されますが合っていますか?
C:\Temp> hogehoge.exe demo.c
と入力して試しましたが上記のエラーが出て検証できません。
正しい入力方法も提示してください。
それと【掲示板ご利用上の注意】をよーく読んでから書き込みをしてください。



この投稿にコメントする

削除パスワード

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




掲示板提供:Real Integrity