Создание собственной версии команды "wc" в c. когда я выполняю ./a.out -l sample.txt, он работает совершенно нормально. Но когда я пытаюсь использовать 2 и 3 аргумента вместо 1, таких как ./a.out -l -w sample.txt, это выдает мне ошибку «Ошибка сегментации (ядро сброшено)». Пожалуйста, помогите
#include<stdio.h>
#include<string.h>
int main(int argc,char* argv[])
{
FILE* fp[20];
int w=0, c=0, l=0, space=1, i;
char ch;
if(argc <= 2) {
printf("error, please atleast 3 argument");
return 1;
}
for (i = 6 ; i < argc; i++)
{
if(argc >= 3)
{
fp[i - 2] = fopen(argv[i],"r");
if (fp[i - 2] == NULL)
{
printf("ERROR in opening filen");
return 1;
}
}
w = 0;
c = 0;
l = 0;
ch = fgetc(fp[i - 2]);
while(!feof(fp[i - 2]))
{
if(ch == ' ')
{
space=1;
}
else if(ch == '\n')
{
l++;
space=1;
}
else
{
if(space==1)
w++;
space=0;
}
c++;
ch = fgetc(fp[i - 2]);
}
if(argc >= 3)
{
if(!strcmp(argv[1],"-w"))
printf("%3d", w);
else if(!strcmp(argv[1],"-l"))
printf("%3d",l);
else if(!strcmp(argv[1],"-c"))
printf("%3d",c);
else if(!strcmp(argv[2],"-w"))
printf("%3d", w);
else if(!strcmp(argv[2],"-l"))
printf("%3d",l);
else if(!strcmp(argv[2],"-c"))
printf("%3d",c);
else if(!strcmp(argv[3],"-w"))
printf("%3d", w);
else if(!strcmp(argv[3],"-l"))
printf("%3d",l);
else if(!strcmp(argv[3],"-c"))
printf("%3d",c);
printf(" %s\n",argv[i]);
}
}
if(argc >= 3)
{
for (i = 2 ; i < (argc - 1); i++)
{
fclose(fp[i - 2]);
}
}
return 0;
}