我正在尝试创建一个程序来生成空文件。但是当它尝试运行该程序时,它会在从控制台接收输入后崩溃。我的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
进入扩展程序崩溃之后。 我是c编程的初学者。
你不能'strcat(argv [1],...)'因为'argv [1]'中没有任何空格用于额外的材质。你必须以某种方式分配空间。对于使用'strcat()'的其他行也是如此。并且['gets()'太危险,无法使用,永远!](http://stackoverflow.com/questions/1694036/why-is-the-gets-function-dangerous-why-should-it-not-使用)。 –
'argv [1]'和'“。”'没有多余的空间来组合字符串。 – BLUEPIXY
'gets()'的使用是危险的。试试'fgets()'。 –