Zdravím, už jsem to řešil na jiném fóru ale nebyl mi nikdo schopný poradit tak, aby mi program fungoval a vyzkoušel jsem všechno co mě napadlo, ale prostě kód "funguje" ale nikdy se mi nedostane do hlavního programu jediná hodnota, kterou načítám ze souboru do pole vstup[i]. Takže se mi v souboru soucet.txt vypíše, že jsem měl 0 čísel a součet je 0.
Posílám jen tu část programu, aby jste viděli o co jde a aby to šlo případně otestovat jestli to funguje nebo ne. Pokud byste to chtěli testovat, tak musíte vytvořit vstup.txt v adresáři programu a hodit tam pár hodnot pod sebe.
Prosím poraďte jak to spravit, jsem si jistej, že to bude zase jen nějaká "maličkost" díky které se mi hned po vrácení do mainu vynuluje hodnota vstup na 0x0. Jsem začátečník, tak se omlouvám za pravděpodobně né moc dobrou konstrukci programu. Je to poslední projekt který v C dělám a jen tohle potřebuji abych ho mohl odevzdat.
Předem všem díky
#include <stdio.h>
#include <stdlib.h>
int nacteni_souboru(int velikost, int *vstup, int cpocet)
{
int cti = 0, i;
const char *VSTUPNISOUBOR = "vstup.txt";
FILE *cteni;
cteni = fopen(VSTUPNISOUBOR,"r");
while(fscanf(cteni, "%d",&cti) != EOF)
cpocet += 1;
velikost = cpocet;
for(i = 0; i < velikost; i++)
fscanf(cteni, "%d", &vstup[i]);
if ((vstup = (int*)malloc(velikost * sizeof(int))) == NULL) {
printf("Malo pameti!\n");
exit(1);
}
fclose(cteni);
return cpocet;
}
int soucet_cisel(int *vstup, int velikost)
{
int soucet = 0, i = 0;
for( i = 0; i < velikost; i++) {
soucet += vstup[i];
}
return soucet;
}
int main()
{
//const char *VSTUPNISOUBOR = "vstup.txt";
const char *SOUCET = "soucet.txt";
const char *SERAZENI= "MinMax.txt";
//const char *INTERVALY= "interval od Min.txt";
int *minMax, *interval, *vstup = 0;
int i, min, max, velikost = 0, pocet = 0, soucet = 0, cpocet = 0, rozsah_intervalu;
FILE *zapis;
cpocet = nacteni_souboru(velikost, vstup, cpocet);
printf("Ve vstupnim souboru je %d cisel, s nimiz bude program pracovat\n", cpocet);
printf("Zadejte rozsah intervalu do kterych budete chtit vase data tridit: ");
scanf("%d", &rozsah_intervalu);
soucet = soucet_cisel(vstup, velikost);
zapis = fopen(SOUCET,"w+");
fprintf(zapis,"Celkovy soucet od 1. do %d. císla je %d\n",velikost, soucet);
fclose(zapis);
return 0;
}