我正在嘗試創建一個程序來生成空文件。但是當它嘗試運行該程序時,它會在從控制檯接收輸入後崩潰。我的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()'。 –