В первой части кода я выделяю место для пяти строк из файла и распечатываю их, в результате чего выясняется вторая часть, которую я пытаюсь посчитать для каждого гласного из файла для каждой строки.Я думаю, что я близок к своему коду, но каждый раз он печатается как ноль для счетчика.Я думаю, что это может быть проблема со второй попыткой чтения в файле, но можно использовать подсказку в правильном направлении.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( int argc, char *argv[] )
{
char max[1024];
char** buff;
int i=0 ,num = 5;
FILE *infile;
int lc = 0; //counts how many lines there are
//asks for file name if none is supplied
if ( argc < 2 )
{
printf("Must supply file name\n");
return 1;
}
infile = fopen( argv[1], "r" );
//checks to see if file opens
if ( infile == NULL )
{
printf("could not open %s\n", argv[1]);
return 1;
}
buff = (char**)calloc(sizeof(max),sizeof(char));
int k;
for(k=0; k<num;k++){
buff[k] = (char*)calloc(sizeof(max),sizeof(char));
}
while(fgets(max,sizeof(max),infile)){
strcpy(buff[i],max);
i++;
}
int x;
for(x =1; x<i;x++){
lc++;
printf("%d:%s",x,buff[x]);
}
int counter[5];
char c;
rewind(infile);
for(i=0; i<5; i++){
counter[i]=0;}
while (fscanf(infile,"%d",&c))
{
if (c=='a' || c=='A')
counter[0]++;
else if (c=='e' || c=='E')
counter[1]++;
else if (c=='i' || c=='I')
counter[2]++;
else if (c=='o' || c=='O')
counter[3]++;
else if (c=='u' || c=='U')
counter[4]++;
}
for(i = 0; i < 5; i++){
printf("counter[%d] = %d\n", i, counter[i]);
}