0
このプログラムは3つ以上の空のファイルを作成しません。ファイル処理プログラムは2つ以上のファイルを作成できません
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int create(char filename[])
{
char filext[10+1]=".";
printf("\nEnter File Extension :");
scanf("%9s",filext+1);
FILE* fp;
strcat(filename, filext);
fp = fopen(filename,"w");
if(!fp)
{
return 0;
}
fclose(fp);
return 1;
}
int main(int argc , char* argv[])
{
int f;
int i;
char* j;
char buffer[33];
char filename[100];
if (argc == 3)
{
for(i = 0; i < atoi(argv[2]) ; i++)
{
j = itoa(i,buffer,10);
strcpy(filename,strcat(argv[1],j));
f = create(filename);
if(f==0)
{
printf("error in creating files . check uac!!!");
}
else{
printf("\nfile Created ...\n");
}
}
}
else{
printf("syntax Error");
}
return 0;
}
私はファイルをexcuteしようとすると、次の出力が表示されます。
F:\selfcreatedtools\filegen>gcc gen.c
F:\selfcreatedtools\filegen>a wander 4
Enter File Extension :php
file Created ...
Enter File Extension :mag
file Created ...
F:\selfcreatedtools\filegen>
私はコマンドラインでargv[2]
= 4を渡します。プログラムのループに応じて4回反復する必要があります。出力として4つのファイルを提供します。私のプログラムは2つのファイルを生成し、ループはそれ以降の繰り返しを停止します。
解決策に感謝します。私は初心者です。
'scanf("%9s "、filext + 1);'?なぜ '+ 1'ですか? –
安全にstrcat(argv [1]、j)を実行することはできません。代わりに自分のバッファを割り当てます。 – jarmod
@DavidBowling最初の文字がピリオド・マークになります。 '' char filext [10 + 1] = "。" ";" –