空のファイルを生成するプログラムを作成しようとしています。プログラムを実行しようとすると、コンソールからの入力を受けた後にクラッシュします。My Cプログラムがクラッシュする
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int create(char* filename)
{
char filext[10];
printf("\nEnter File Extension :");
fgets(filext);
FILE* fp;
fp = fopen(strcat(filename,strcat(".",filext)),"w");
if(!fp)
{
return 0;
}
fclose(fp);
return 1;
}
int main(int argc , char* argv[])
{
int f;
int i;
char buffer[33];
if (argc == 3)
{
for(i = 0; i < atoi(argv[2]) ; i++)
{
f = create(strcat(argv[1],itoa(i,buffer,10)));
if(f==0)
{
printf("error in creating files . check uac!!!");
}
else{
printf("\nfile Created ...\n");
}
}
}
else{
printf("syntax Error");
}
return 0;
}
私はこのプログラムを実行しようとすると、私は拡張子にプログラムがクラッシュを入力した後、次の出力
F:\selfcreatedtools\filegen>gcc gen.c
F:\selfcreatedtools\filegen>a level 100
Enter File Extension :php
を取得します。 私はプログラミングの初心者です。
'argv [1]'に余分なマテリアルがないので、 'strcat(argv [1]、...)'は実行できません。あなたは何とかスペースを割り当てなければなりません。 'strcat()'を使う他の行についても同様です。そして、 '' gets() ''は使用するにはあまりにも危険です!](http://stackoverflow.com/questions/1694036/why-is-the-gets-function-dangerous-why-should-it-not-利用される)。 –
'argv [1]'と ''。 "'は文字列を結合する余分なスペースを持たない。 – BLUEPIXY
'gets()'の使用は危険です。 'fgets()'を試してください。 –