Dobrý den,
chtěl bych vás poprosit o pomoc. Muj kód by měl sloužit k rozparsování stringu do názvu složek. Takže když je například:
C/User/Games vloží do pole foldersName = {"C","User","Games"}, kód funguje správně až na vyjímku kdy, když vložím
"C/Hra/Halo 4/Map" tak za poslední slovo Map do pole přidá "C", takže následně pole má složky
foldersName = {"C","Hra","Halo 4","MapC"}, pokud však vložím například "C/Hra/Halo 4/Ma" nebo "C/Hra/Halo 4/Mapa" chyba už se nevyskytuje . Mohl by mi někdo prosím poradit, musí to být chyba přesně na tom 13. indexu kde končí "Map".Protože pokud "zkrátím" předchozí složky a počet ubraných písmenek přidám na konec slova chyba se vyskytne na stejném indexu jako v předchozím případě. Prosím o pomoc v C dělám druhým dnem a nevím si s tím rady. Děkuji všem
Kód
void cd(char* path){
/**slouzi k pocitani poctu slov
int count = 0;
int length = (int)strlen(path);
/**slouzi k for cyklum
int i = 0;
/**spocteny poctu slov
for(i;i<length;i++){
if(path[i]=='/')
count ++;
}
/**inicializace pole stringu
char foldersName[count][255];
/**pomocne pole pro rozparsovani
char str[strlen(path)];
strcpy(str,path);
char * pch;
pch = strtok (str,"/");
count =0;
while (pch != NULL)
{
strcpy(foldersName[count],pch);
pch = strtok (NULL, "/");
count ++;
}
printf("----------------Tokens-----------\n");
for(i =0;i<count;i++){
printf("%s \n",foldersName[i]);
}
Chyba v kodu - C [Vyreseno] Vyřešeno
Chyba v kodu - C [Vyreseno] Vyřešeno
Naposledy upravil(a) mikealafi dne 04 led 2017 19:42, celkem upraveno 1 x.
- satik
- Level 6
- Příspěvky: 3509
- Registrován: leden 15
- Bydliště: Krkonoše
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Chyba v kodu - C
Obsah foldersName jsou na zacatku nahodna data, protoze ho nikde nenulujes (a Cecko to za tebe neudela).
Ty do toho pak jen nakopirujes obsah stringu (pole charu), ale neresis jeho konec, konec se pozna tak, ze je tam znak s hodnotou 0.
Tudiz muzes udelat bud to, ze cely foldersName vynulujes a nebo musis na konec kazdyho stringu v foldersname prilepit znak 0 (treba pres strcat).
Ty do toho pak jen nakopirujes obsah stringu (pole charu), ale neresis jeho konec, konec se pozna tak, ze je tam znak s hodnotou 0.
Tudiz muzes udelat bud to, ze cely foldersName vynulujes a nebo musis na konec kazdyho stringu v foldersname prilepit znak 0 (treba pres strcat).
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Re: Chyba v kodu - C
Už je to skoro šest let co se tu řešilo něco podobného, ale platí to pořád
Céčko za tebe neudělá vůbec nic, je jako břitva kterou se můžeš oholit dokonaleji než jakýmkoliv elektrickým strojkem, ale stačí jediný chybný pohyb a uřízneš si půlku obličeje!
Dva Céčkové řetězce si zajdou do baru.
Barman se jich ptá co si budou přát.
První si objednává: "Já bych si dal sklenu vína."
Potom druhý: "Já chci jen minerálku.^}{@&#<€"
Barman se udiveně obrátí na první řetězec: "Není kolega nemocen?"
A ten odpoví: "Ale ne, on je jen chybně ukončen."
Céčko za tebe neudělá vůbec nic, je jako břitva kterou se můžeš oholit dokonaleji než jakýmkoliv elektrickým strojkem, ale stačí jediný chybný pohyb a uřízneš si půlku obličeje!
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Chyba v kodu - C
while (pch != NULL)
{
strcpy(foldersName[count],pch);
strcat(foldersName[count],"\0");
pch = strtok (NULL, "/");
count ++;
}
Takto sem upravil while cyklus, ale pořád stejná chyba
{
strcpy(foldersName[count],pch);
strcat(foldersName[count],"\0");
pch = strtok (NULL, "/");
count ++;
}
Takto sem upravil while cyklus, ale pořád stejná chyba
- satik
- Level 6
- Příspěvky: 3509
- Registrován: leden 15
- Bydliště: Krkonoše
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Chyba v kodu - C
Jo, jsem si neuvědomil, že strcat hledá konec stringu právě podle tý nuly, kterou se tam chystáš přilepit
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Re: Chyba v kodu - C
Tak problem vyřešen, byla hlavní chyba v tom že char str neměl místo na vrácený "\0" byl definován jen na velikost path a pokud sem přidal velikost path +1 tak chyba je vyřešena, ale děkuji! :)
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 1
- 1830
-
od Roman Tyčka
Zobrazit poslední příspěvek
25 pro 2023 18:41
-
- 1
- 1967
-
od petr22
Zobrazit poslední příspěvek
04 zář 2023 16:09
-
-
Windows 98 chyba při startu ......VXD Příloha(y)
od Radovan-kocour » 24 říj 2023 18:49 » v Windows 11, 10, 8... - 5
- 1428
-
od Radovan-kocour
Zobrazit poslední příspěvek
25 říj 2023 15:24
-
-
- 9
- 1724
-
od petr22
Zobrazit poslední příspěvek
21 říj 2023 13:29
-
- 2
- 786
-
od Alferi
Zobrazit poslední příspěvek
18 čer 2023 15:40
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti