Подсчет большинства повторяющихся гласных из динамически распределяемого файла - PullRequest
0 голосов
/ 19 сентября 2019

В первой части кода я выделяю место для пяти строк из файла и распечатываю их, в результате чего выясняется вторая часть, которую я пытаюсь посчитать для каждого гласного из файла для каждой строки.Я думаю, что я близок к своему коду, но каждый раз он печатается как ноль для счетчика.Я думаю, что это может быть проблема со второй попыткой чтения в файле, но можно использовать подсказку в правильном направлении.

#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]);
}

1 Ответ

1 голос
/ 19 сентября 2019

Вы читаете с fscanf(infile,"%d",&c).%d для чисел, но вы хотите символы.Вместо этого используйте %c.

...