Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Autor | Správa |
---|
Registrovaný: 01.02.08 Prihlásený: 10.04.15 Príspevky: 31 Témy: 11 | 11 |
Zdravim,
Chcel by som sa opytat co moze sposobit ze program padne pri return.
Mam program ktory ma nacitat cisla zo suboru a zapisat ich binarne do ineho suboru. Program prebehne bez problemov ale ked pride ku return tak padne s chybou 0x00..005 access violation.
Kód: #include <stdio.h> #include <windows.h> #include <string.h>
bool m_fgets(FILE *f, char *s_in) { int i=0; char c; while (1) { if (fscanf(f, "%c", &c)>0) { if ((c!='\n') && (c!=10)) { s_in[i]=c; } else { s_in[i]=0; return true; } } else { s_in[i]=0; return false; } i++; } }
int main(int argc, char *argv[]) { float num; int inum; char nazov[50]; char *readed; FILE *fr=NULL, *fw=NULL; readed = new char[20]; if (argc<2) { printf("nazov suboru: "); scanf("%s", nazov); getchar(); } else { strcpy(nazov, argv[1]); } fr=fopen(nazov, "r"); nazov[strlen(nazov)-3]='d'; nazov[strlen(nazov)-2]='a'; nazov[strlen(nazov)-1]='t'; fw=fopen(nazov, "wb"); m_fgets(fr, readed); inum=atoi(readed); fwrite(&inum, sizeof(int), 1, fw); while (m_fgets(fr, readed)) { num=atof(readed); fwrite(&num, sizeof(float), 1, fw); } fclose(fw); fclose(fr); delete []readed; printf("aaegaeg\n"); getchar(); return 0; }
|
|
Registrovaný: 11.01.09 Prihlásený: 25.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
V prvom rade sa treba rozhodnut, ci bude program v C alebo v C++ lebo toto nie je ani jedno. Blizsie to ma k Cecku, tak miesto new/delete daj malloc/free a includni header stdlib.h.
Ak to ma robit iba to ze z textoveho suboru precita cisla a ulozi ich do binarneho, preco to robis tak komplikovane? Ved ti staci precitat priamo cislo ( int, double, neviem ake velke potrebujes citat ) a hned ho ulozit do binarneho suboru. Odpada ti tak pracne citanie po znakoch, ktore je v tomto pripade aj uplne zbytocne.
Co sa tyka chyby, mne to ziadnu nehodi ( po hore spomenutej uprave kodu ), je mozne ze zalezi aj od vstupu, ktory mu davas, ja som si vytvoril len provizorny, 5 riadkovy subor s 5-cifernymi cislami.
|
|
Registrovaný: 01.02.08 Prihlásený: 10.04.15 Príspevky: 31 Témy: 11 | 11 |
Tak som to upravil. Co sa tej chyby tyka, ked spustim program a vstup zadam tak to funguje ale ked na textovy subor kliknem pravym, dam Open with a zvolim si tento program, tak to tiez funguje ale na konci to znova hodi tu chybu. Robil som viac programov s main(int argc, char *argv[]) ale toto je prvy ktory poriadne nefunguje.
|
|
Registrovaný: 11.01.09 Prihlásený: 25.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Ak teda vravis, ze pri priamom zadani suboru v programe ti to ide ( vtedy zadavas zrejme iba nazov z aktualnej zlozky, cize je krakty ), ale pri moznosti "Open with" to robi hluposti ( vtedy je do parametra prikazoveho riadku vlozeny cely nazov suboru, cize moze byt dost dlhy C:\Document and .... ), navrhol by som ti zvysit velkost premennej nazov aspon na 255, ci to pojde korektne.
|
|
Registrovaný: 01.02.08 Prihlásený: 10.04.15 Príspevky: 31 Témy: 11 | 11 | |
Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Technológia .NET | 2 | 564 | 22.08.2015 22:53 p4tooo | | v HTML, XHTML, XML, CSS | 6 | 626 | 29.10.2013 15:21 Beatdownhaus | | v Assembler, C, C++, Pascal, Java | 1 | 312 | 08.05.2014 2:33 matwej | | v PHP, ASP | 3 | 603 | 19.04.2011 15:31 ThePlaky | | v Video programy | 1 | 566 | 05.03.2009 23:56 embrio28 | | v JavaScript, VBScript, Ajax | 2 | 638 | 25.02.2012 18:45 iop | | v Obchody, reklamácie a právo | 2 | 797 | 03.07.2010 13:30 petKO | | v Assembler, C, C++, Pascal, Java | 2 | 380 | 25.10.2014 10:37 dany2281995 | | v JavaScript, VBScript, Ajax | 20 | 1074 | 08.10.2009 10:07 pilná lama glama | | v PHP, ASP | 4 | 441 | 16.10.2011 16:26 Dawn | | v Redakčné systémy | 0 | 502 | 14.10.2006 14:55 JanoF | | v Assembler, C, C++, Pascal, Java | 15 | 553 | 08.11.2011 21:29 street_punk | | v Počítačové hry | 18 | 1490 | 18.09.2006 19:20 Harlequin | | v Monitory, televízory a projektory | 3 | 1876 | 15.08.2010 14:11 KocuR | | v Assembler, C, C++, Pascal, Java | 14 | 826 | 27.06.2008 21:17 chrono | | v JavaScript, VBScript, Ajax | 2 | 488 | 13.10.2010 15:42 emer |
|