Práce se soubory - chyby ve zdrojáku – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Práce se soubory - chyby ve zdrojáku – C / C++ – Fórum – Programujte.comPráce se soubory - chyby ve zdrojáku – C / C++ – Fórum – Programujte.com

 

juklmi
~ Anonymní uživatel
7 příspěvků
6. 6. 2012   #1
-
0
-

Dobré ráno všem, 

prosím o pomoc, mám tu zdroják s cca dvaceti chybičkami plus exáč (viz odkaz dole, jak by měl výsledný program fungovat), mohl by mi prosím někdo pomoci nalézt chyby? Díky!

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

typedef struct s_kurz {
char mena[];
int mnozstvi;
double kurz;
} KURZ;

double cti_kladne_cislo() {
double cislo = 0;
int pocet_nactenych, zbytecny_znak, pokus;

do {
pokus++;
if (pokus > 1) {
if (pocet_nactenych = 0) {
printf("Nezadal jsi cislo, zadej desetinne cislo: ");
} else if (cislo <= 0) {
printf("Cislo musi byt kladne, zadej kladne cislo: ");
}
}
pocet_nactenych = scanf("%lf", cislo);
do {
zbytecny_znak = getchar();
} while (zbytecny_znak != '\r' && zbytecny_znak != '\n');
} while (pocet_nactenych != 1 && cislo <= 0);
}

int nacti_listek(char *nazev_souboru, KURZ kurzy[], int max_pocet) {
FILE *soubor;

soubor = fopen(nazev_souboru, "r");
if (soubor) {
while (i < max_pocet && fscanf(soubor, "%d %3s %lf\n", &kurzy[i].mnozstvi, kurzy[i].mena, &kurzy[i].kurz) == 3); {
i++;
}
fclose(soubor);
printf("Kurzovni listek byl nacten.\n");
} else {
printf("Nelze nacist kurzy ze souboru %s.\n", nazev_souboru);
}
return i;
}

void uloz_listek(char *nazev_souboru, KURZ kurzy[], int pocet) {
FILE *soubor;
int i;

soubor = fopen(nazev_souboru, "r");
if (soubor) {
for (i = 0; i < pocet; i++)
fprintf(soubor, "%d %s %lf\n", &kurzy[i].mnozstvi, kurzy[i].mena, &kurzy[i].kurz);
}
fclose(soubor);
printf("Kurzovni listek byl ulozen do souboru %s.\n");
} else {
printf("Nelze ulozit kurzy do souboru %s.\n", nazev_souboru);
}
}

void zmen_listek(KURZ kurzy[], int pocet) {
int i;

printf("Zadej nove kurzy:\n");
for (i = 0; i <= pocet; i++)
printf("%d %s = ", kurzy[i].mnozstvi, kurzy[i].mena);
kurzy[i].kurz = cti_kladne_cislo()

}

int main(int argc, char *argv[]) {
char nazev_souboru[] = "kurzy.txt";
KURZ kurzy[5];
int pocet;

pocet = nacti_listek(nazev_souboru, kurzy, 10);
if (pocet) {
zmen_listek(kurzy, pocet);
uloz_listek(nazev_souboru, kurzy, pocet);
}

system("PAUSE");
return 0;
}

exáč: http://www.jezdeniprovsechny.cz/Nechodi10.exe

soubor: http://www.jezdeniprovsechny.cz/kurzy.txt

Nahlásit jako SPAM
IP: 78.80.3.–
vitamin+8
Grafoman
6. 6. 2012   #2
-
0
-

#1 juklmi
Tu mas zoznam vecsiny chyb, pozri si aj warningy.

clang -Wall -o "untitled" "untitled.c" (in directory: /home/*/Plocha)
Compilation failed.
untitled.c:5:6: error: field has incomplete type 'char []'
char mena[];
     ^
untitled.c:17:21: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
if (pocet_nactenych = 0) {
    ~~~~~~~~~~~~~~~~^~~
untitled.c:17:21: note: place parentheses around the assignment to silence this warning
if (pocet_nactenych = 0) {
                    ^
    (                  )
untitled.c:17:21: note: use '==' to turn this assignment into an equality comparison
if (pocet_nactenych = 0) {
                    ^
                    ==
untitled.c:35:8: error: use of undeclared identifier 'i'
while (i < max_pocet && fscanf(soubor, "%d %3s %lf\n", &kurzy[i].mnozstvi, kurzy[i].mena, &kurzy[i].kurz) == 3); {
       ^
untitled.c:35:63: error: use of undeclared identifier 'i'
while (i < max_pocet && fscanf(soubor, "%d %3s %lf\n", &kurzy[i].mnozstvi, kurzy[i].mena, &kurzy[i].kurz) == 3); {
                                                              ^
untitled.c:36:1: error: use of undeclared identifier 'i'
i++;
^
untitled.c:43:8: error: use of undeclared identifier 'i'
return i;
       ^
untitled.c:56:48: warning: more '%' conversions than data arguments [-Wformat]
printf("Kurzovni listek byl ulozen do souboru %s.\n");
                                              ~^
untitled.c:57:3: error: expected identifier or '('
} else {
  ^
untitled.c:60:1: error: expected external declaration
}
^
untitled.c:68:35: error: expected ';' after expression
kurzy[i].kurz = cti_kladne_cislo()
                                  ^
                                  ;
2 warnings and 8 errors generated.
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
juklmi
~ Anonymní uživatel
7 příspěvků
6. 6. 2012   #3
-
0
-
Nahlásit jako SPAM
IP: 78.80.3.–
juklmi
~ Anonymní uživatel
7 příspěvků
Nahlásit jako SPAM
IP: 78.80.3.–
vitamin+8
Grafoman
6. 6. 2012   #5
-
0
-

vloz sem zdrojak pomocou moznosti: "Vlozit zdrojovy kod"

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý