我多次仔细检查了所有内容,但我不明白为什么我能够编译可执行文件,但是一旦启动就会给我这个错误“分段错误:11”。
这是我的代码:
#include<stdio.h>
void vocali(char testo[101], output)
{
char a=0,e=0,i=0,o=0,u=0;
int contatore=0, j=0;
for (j=0; j<100; j++)
{
if((testo[j] =='a')||(testo[j]=='A'))
{
contatore++;
a++;
}
else if((testo[j] =='e')||(testo[j]=='E'))
{
contatore++;
e++;
}
else if((testo[j] =='i')||(testo[j]=='I'))
{
contatore++;
i++;
}
else if((testo[j] =='o')||(testo[j]=='O'))
{
contatore++;
o++;
}
else if((testo[j] =='u')||(testo[j]=='U'))
{
contatore++;
u++;
}
}
fprintf((FILE*)output, "%s", "%d", "Le vocali nella stringa sono:\n",contatore);
fprintf(output, "Lettere 'A' sono: %d\n",a);
fprintf(output, "Lettere 'E' sono: %d\n",e);
fprintf(output, "Lettere 'I' sono: %d\n",i);
fprintf(output, "Lettere 'O' sono: %d\n",o);
fprintf(output, "Lettere 'U' sono: %d\n",u);
}
void consonanti(char testo[101], output)
{
char b=0,c=0,d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;
int contatore=0,i=0;
for (i=0; i<100; i++)
{
if ((testo[i]=='b')||(testo[i]=='B'))
{
contatore++;
b++;
}
else if ((testo[i]=='c')||(testo[i]=='C'))
{
contatore++;
c++;
}
else if ((testo[i]=='d')||(testo[i]=='D'))
{
contatore++;
d++;
}
else if ((testo[i]=='f')||(testo[i]=='F'))
{
contatore++;
f++;
}
else if ((testo[i]=='g')||(testo[i]=='G'))
{
contatore++;
g++;
}
else if ((testo[i]=='h')||(testo[i]=='H'))
{
contatore++;
h++;
}
else if ((testo[i]=='j')||(testo[i]=='J'))
{
contatore++;
j++;
}
else if ((testo[i]=='k')||(testo[i]=='K'))
{
contatore++;
k++;
}
else if ((testo[i]=='l')||(testo[i]=='L'))
{
contatore++;
l++;
}
else if ((testo[i]=='m')||(testo[i]=='M'))
{
contatore++;
m++;
}
else if ((testo[i]=='n')||(testo[i]=='N'))
{
contatore++;
n++;
}
else if ((testo[i]=='p')||(testo[i]=='P'))
{
contatore++;
p++;
}
else if ((testo[i]=='q')||(testo[i]=='Q'))
{
contatore++;
q++;
}
else if ((testo[i]=='r')||(testo[i]=='R'))
{
contatore++;
r++;
}
else if ((testo[i]=='s')||(testo[i]=='S'))
{
contatore++;
s++;
}
else if ((testo[i]=='t')||(testo[i]=='T'))
{
contatore++;
t++;
}
else if ((testo[i]=='w')||(testo[i]=='W'))
{
contatore++;
w++;
}
else if ((testo[i]=='x')||(testo[i]=='X'))
{
contatore++;
x++;
}
else if ((testo[i]=='y')||(testo[i]=='Y'))
{
contatore++;
y++;
}
else if ((testo[i]=='z')||(testo[i]=='Z'))
{
contatore++;
z++;
}
}
fprintf(output, "le consonanti nella stringa sono: ",contatore);
fprintf(output, "Lettere 'B' sono: %d\n",b);
fprintf(output, "Lettere 'C' sono: %d\n",c);
fprintf(output, "Lettere 'D' sono: %d\n",d);
fprintf(output, "Lettere 'F' sono: %d\n",f);
fprintf(output, "Lettere 'G' sono: %d\n",g);
fprintf(output, "Lettere 'H' sono: %d\n",h);
fprintf(output, "Lettere 'J' sono: %d\n",j);
fprintf(output, "Lettere 'K' sono: %d\n",k);
fprintf(output, "Lettere 'L' sono: %d\n",l);
fprintf(output, "Lettere 'M' sono: %d\n",m);
fprintf(output, "Lettere 'N' sono: %d\n",n);
fprintf(output, "Lettere 'P' sono: %d\n",p);
fprintf(output, "Lettere 'Q' sono: %d\n",q);
fprintf(output, "Lettere 'R' sono: %d\n",r);
fprintf(output, "Lettere 'S' sono: %d\n",s);
fprintf(output, "Lettere 'T' sono: %d\n",t);
fprintf(output, "Lettere 'V' sono: %d\n",v);
fprintf(output, "Lettere 'W' sono: %d\n",w);
fprintf(output, "Lettere 'X' sono: %d\n",x);
fprintf(output, "Lettere 'Y' sono: %d\n",y);
fprintf(output, "Lettere 'Z' sono: %d\n",z);
}
void numeri(char testo[101], output)
{
char zero=0,uno=0,due=0,tre=0,quattro=0,cinque=0,sei=0,sette=0,otto=0,nove=0;
int contatore=0, k=0;
for (k=0; k<100; k++)
{
if(testo[k] =='0')
{
contatore++;
zero++;
}
else if(testo[k] =='1')
{
contatore++;
uno++;
}
else if(testo[k] =='2')
{
contatore++;
due++;
}
else if(testo[k] =='3')
{
contatore++;
tre++;
}
else if(testo[k] =='4')
{
contatore++;
quattro++;
}
else if(testo[k] =='5')
{
contatore++;
cinque++;
}
else if(testo[k] =='6')
{
contatore++;
sei++;
}
else if(testo[k] =='7')
{
contatore++;
sette++;
}
else if(testo[k] =='8')
{
contatore++;
otto++;
}
else if(testo[k] =='9')
{
contatore++;
nove++;
}
}
fprintf(output, "I numeri nella stringa sono: %d\n",contatore);
fprintf(output, "I numeri '0' sono: %d\n",zero);
fprintf(output, "I numeri '1' sono: %d\n",uno);
fprintf(output, "I numeri '2' sono: %d\n",due);
fprintf(output, "I numeri '3' sono: %d\n",tre);
fprintf(output, "I numeri '4' sono: %d\n",quattro);
fprintf(output, "I numeri '5' sono: %d\n",cinque);
fprintf(output, "I numeri '6' sono: %d\n",sei);
fprintf(output, "I numeri '7' sono: %d\n",sette);
fprintf(output, "I numeri '8' sono: %d\n",otto);
fprintf(output, "I numeri '9' sono: %d\n",nove);
}
int main()
{
FILE *inFile = fopen("input.txt","r");
FILE *outputVocali = fopen("vocali.txt","w+");
FILE *outputConsonanti = fopen("consonanti.txt","w+");
FILE *outputNumeri = fopen("numeri.txt","w+");
if(inFile == NULL)
{
printf("Errore nell'aprire input.txt\n");
}
if(outputVocali == NULL)
{
printf("Errore nell'aprire vocali.txt\n");
}
if(outputConsonanti == NULL)
{
printf("Errore nell'aprire consonati.txt\n");
}
if(outputNumeri == NULL)
{
printf("Errore nell'aprire numeri.txt\n");
}
char testo[100];
fgets(testo, sizeof testo, inFile);
vocali(testo, outputVocali);
consonanti(testo, outputConsonanti);
numeri(testo, outputNumeri);
fclose(inFile);
fclose(outputVocali);
fclose(outputConsonanti);
fclose(outputNumeri);
return 0;
}
这个错误的原因是什么?查看源代码,你能告诉我它是什么生成的吗?
非常感谢