Zdravím. Uměl by někdo poradit, proč mi tento kód nedokáže načíst první znak v souboru a místo toho raději načítá mezeru?
#include <stdio.h>
#include <stdlib.h>
int PocetRadku(FILE *fr) //zjistím si počet řádků
{
int c;
int pocet = 1;
while((c = getc(fr)) != EOF)
if (c == '\n') pocet++;
return pocet;
}
int je_cislice(char znak)
{
if(((znak >= '0') && (znak <= '9')) || znak == '-')
return 1;
else
return 0;
}
//void soucet_cisel(const char* vstup, const char* vystup)
void soucet_cisel(const char* vstup)
{
FILE *fr, *fw;
fr = fopen(vstup, "r");
//fw = fopen("vylsdek.txt", "a+");
int pocet_radku, soucet, i, help;
pocet_radku = PocetRadku(fr);
//printf("%d", pocet_radku);
char znak;
if(fr == NULL)
{
printf("Soubor nenalezen!!!\n");
system("PAUSE");
return 0;
}
for(i = 1; i <= pocet_radku; i++)
{
soucet = 0;
while(((znak = fgetc(fr)) != '\n') || (znak != EOF))
{
printf("%c!\n", znak);
if(je_cislice(znak))
{
printf("%c", znak);
ungetc(znak, fr);
fscanf(fr,"%d", &help);
soucet += help;
}
else break;
}
printf("Soucet je %d\n", soucet);
i++;
}
fclose(fr);
}
int main()
{
/* FILE *fr;
if((fr = fopen("vstup.txt","r")) == NULL) //test otevreni
{
printf("Soubor se nepodarilo otevrit.\n");
system("pause");
return 1;
}
printf("Pocet radku %d\n",PocetRadku(fr));
printf("%d", je_cislice('a'));*/
soucet_cisel("vstup.txt");
return 0;
}
Soubor pro testování u mě vypadá takto:
1 2 2