Chyba v kodu - C [Vyreseno] Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

mikealafi
nováček
Příspěvky: 24
Registrován: červenec 16
Pohlaví: Muž
Stav:
Offline

Chyba v kodu - C [Vyreseno]  Vyřešeno

Příspěvekod mikealafi » 04 led 2017 00:34

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]);

}
Naposledy upravil(a) mikealafi dne 04 led 2017 19:42, celkem upraveno 1 x.

Reklama
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Chyba v kodu - C

Příspěvekod satik » 04 led 2017 16:18

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).
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

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Chyba v kodu - C

Příspěvekod faraon » 04 led 2017 16:34

Už je to skoro šest let co se tu řešilo něco podobného, ale platí to pořád :lol:

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)

mikealafi
nováček
Příspěvky: 24
Registrován: červenec 16
Pohlaví: Muž
Stav:
Offline

Re: Chyba v kodu - C

Příspěvekod mikealafi » 04 led 2017 19:34

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 :-(

Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Chyba v kodu - C

Příspěvekod satik » 04 led 2017 19:40

Jo, jsem si neuvědomil, že strcat hledá konec stringu právě podle tý nuly, kterou se tam chystáš přilepit :D
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

mikealafi
nováček
Příspěvky: 24
Registrován: červenec 16
Pohlaví: Muž
Stav:
Offline

Re: Chyba v kodu - C

Příspěvekod mikealafi » 04 led 2017 19:41

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
  • Preskladané PC -chyba Příloha(y)
    od krakenus600 » 02 dub 2023 14:36 » v Problémy s hardwarem
    18
    1558
    od krakenus600 Zobrazit poslední příspěvek
    03 dub 2023 17:07
  • chyba 0xc0000142
    od Culter » 24 říj 2023 21:59 » v Windows 11, 10, 8...
    1
    1668
    od Roman Tyčka Zobrazit poslední příspěvek
    25 pro 2023 18:41
  • chyba na webu
    od teichmann.ondrej » 04 zář 2023 15:45 » v Programování a tvorba webu
    1
    1781
    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
    1368
    od Radovan-kocour Zobrazit poslední příspěvek
    25 říj 2023 15:24
  • Chyba po zapnutí notebooku. Příloha(y)
    od paolov » 17 říj 2023 10:52 » v Problémy s hardwarem
    9
    1674
    od petr22 Zobrazit poslední příspěvek
    21 říj 2023 13:29

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 1 host