Program który zlicza wybraną litere z pliku

0

Może i było setki razy, chociaż tego konkretnego chyba nigdy...

Użytkownik podaje literke
Program ma z pliku tekstowego zliczyć ile razy ta literka występuje.
Moja propozycja wyglada tak:

#include<stdio.h>
#include <iostream>

int main(){
    
    
     printf("Witaj w programie!\n");
     char litera;
     char litera2;
     
     

    printf("Wprowadz litere ktora chcesz znalesc.");
    printf("\n\n"); 
    scanf("%c", &litera);
    int licz_liter=0;
    

    
    FILE *plik;
    plik=fopen("text.txt", "r");
   while (!feof(plik))
{   
 fscanf(plik, "%c", &litera);
 if (litera == litera2)
 {licz_liter++;}
}
    
    printf("\n\n\n"); 
    
    printf("Liter: %d", licz_liter);

    if(!plik){printf("zle"); }
    
    printf("\n\n\n"); 

   getchar();
    system("PAUSE");
    }

Zależało by mi żeby feof został użyty, błąd jest gdzieś po while i dlatego coś nie zlicza jak trzeba ; D. Czy mam użyć do tego tablicy? Proszę o pomoc.

0

Zależało by mi żeby feof został użyty
Dlaczego ci zależy na czymś, co NIE jest prawidłowe?

0

Więc jakieś propozycje alternatywne mógłbyś przedstawić? I co jest konkretnie nie w porządku?

dzięki

1

Chyba oto Ci chodziło.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char  *argv[])
{
  char *tab;
  long licznik = 1;
  long licz = 0;
  int e = 0;
  int i ;
  char litera;
  FILE *plik;

  tab = (char*) malloc(licznik * sizeof *tab);
  if (tab ==NULL) return;
    
     printf("Wprowadz litere ktora chcesz znalesc:");
     scanf("%c", &litera);

    
    if((plik = fopen("b.txt", "r")) == NULL)
  {
        fprintf(stderr, "bład\n");
        exit(1);
  }
    
 while((tab[e]= getc(plik)) != EOF) e++;


for(i = 0; i != tab[licznik]; i++)
{
      if(tab[i] == litera)
               licz++;
}

  if(fclose(plik) != 0  ){

			  fprintf(stderr,"blad.\n");
			  exit(3);
		  }
		  printf("\nliczba znakow: %ld\n", licz);
  system("PAUSE");	
  return 0;
}

EDIT: był mały błąd w pętli for ale już poprawiłem
EDIT: nav a teraz ? lepiej ? tamto też działało dobrze a nie musiałem pisać 2 zmiennej

0

yeap wykorzystałem rzecz najwazniejsza, mialem pomysl z ta tablicą ale z wykonaniem znacznie gorzej, dzięki wielki ; )))

EDIT: Wiesz chodziło tylko o pomysł więc nawet nie sprawdzałem tego kodu ;D, jeszcze raz dzieki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1