0
나는 여러 번 모든 것을 두 번 확인했지만 왜 실행 파일을 컴파일 할 수 있는지 이해할 수 없지만 일단 실행하면이 오류 "분할 오류 : 11"이 표시됩니다.분할 오류 : 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;
}
이 오류의 원인은 무엇인가 :
이 내 코드? 소스 코드보기, 그 코드가 무엇을 생성하는지 알려주시겠습니까?
fgets(testo, sizeof testo, inFile) ;
이 존재하는
input.txt
안정적으로 나를 위해 세그먼트 폴트를 생산하고 있지 않는 :
고마워 그것은이 라인과 같은
gdb [https://www.gnu.org/software/gdb/]를 시도하여 코드를 단계별로 실행하고 코드의 어느 부분이 seg-fault를 생성하는지 확인해 보셨습니까? – ffledgling
디자인을 재검토해야하며 코드가 좋지 않습니다. – Maroun
파일을 열지 만 실행을 계속하지 않으면 오류 메시지가 출력됩니다 ... 좋은 생각이 아닙니다. –