Sestavte funkci, která zjistí počet písmen, číslic, tabelátorů a nových řádků ve znakovém souboru. Funkci použijte v programu, který bude číst soubor z vnějšího zařízení
Program už víceméně mám (až na tabelátory a nové řádky) ale chtělo by to odladit, program mi počítá pouze první písmena ve slovech a nedaří se mi to upravit, nemam talent na programování a kdybych nemusel ani se ho neučim ale bohužel musím to přetrpět, proto prosím nějakou hodnou duši aby mi poradila v čem je problém, co upravit. Byl bych vám neskutečně vděčný, zde je zdroják
#include <stdio.h>
#include <conio.h>
#include <math.h>
FILE *f;
int main ()
{
int pocet[256],j,hodnota,pismen,slov;
f=fopen("text.txt","r");
if (f==NULL){printf("soubor se neotevrel\n"); getchar();}
j=0;slov=0;
do {
pocet[j]=0;
j++;
} while (j<256);
while ((hodnota!=EOF)&&((hodnota=getc(f))!=EOF)){
pocet[hodnota]++;
if ((hodnota>='a')&&(hodnota<='z')) {
pismen=1;
while (((hodnota=getc(f))!=EOF)&&((hodnota>='a')&&(hodnota<='z'))) {
pismen++;
}
if (pismen>=2) slov++;
}
}
printf ("\n");
printf ("Pocet jednotlivych cislic:\n");
j=0; do { /* vypis cisel */
printf (" %d(%d)",j,pocet[j+'0']);
j++;
} while (j<10); printf ("\n");
printf ("\n");
printf ("Pocet jednotlivych malych pismen:\n");
j=0; do { /* vypis malych pismen */
printf (" %c(%d)",(char)(j+'a'),pocet[j+'a']);
j++;
} while (j<26); printf ("\n");
printf ("\n");
printf ("Slov %d",slov);
getchar();
getchar();
}
tady jsem dostal něco od profesionála ale bohužel to nefunguje, nedaří se mi to v devc odladit
int pismena = 0, cisla = 0, taby = 0, radky = 0;
FILE * InFile = fopen("soubor.txt", "r");
char pismeno;
while((pismeno = fgetc(InFile)) != EOF)
{
if(isalpha(pismeno)) pismena++;
elseif(isdigit(pismeno)) cisla++;
elseif(pismeno == '\t') taby++;
elseif(pismeno == '\n') radky++;
}
fclose(InFile);