Čtení ze stringu po jednom znaku – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Čtení ze stringu po jednom znaku – C / C++ – Fórum – Programujte.comČtení ze stringu po jednom znaku – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Nefertiri
~ Anonymní uživatel
6 příspěvků
14. 11. 2010   #1
-
0
-

Ahoj,

mám string (jednoroyźměrné pole typu char) a funkci, ve které potřebuju z toho stringu číst po jednom znaku.
Zkoušela jsem getc, sscanf, ale nic nefungovalo.

Díky, Nefe

Nahlásit jako SPAM
IP: 82.208.2.–
Reklama
Reklama
KIIV+42
God of flame
14. 11. 2010   #2
-
0
-

nefunguje indexace pole pomoci operatoru [] ?

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Nefertiri
~ Anonymní uživatel
6 příspěvků
14. 11. 2010   #3
-
0
-

s getc ne (zkoušela jsem jako argument fci předávat i string i ukazatel na něj) a při použití sscanf to načítá nějáký šílený znaky

Nahlásit jako SPAM
IP: 82.208.2.–
KIIV+42
God of flame
14. 11. 2010   #4
-
0
-

spis napis co pouzivas..

kdyz mas retezec[] = "abcde";
tak retezec[0] je 'a'
az po 'e' na pozici 4

getc to bere ze standardniho vstupu takze pouzit asi nepujde.. sscanf by mel fungovat.. paznaky to muze hazet pokud neni retezec ukoncenej pomoci znaku '\0'

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Nefertiri
~ Anonymní uživatel
6 příspěvků
14. 11. 2010   #5
-
0
-

v MAINu mám pointer zadeklarovanej jako char * sBuffer
do fuknce ho předávám jako parametr sBuffer
v deklaraci funkce mám na jeho pozici tvar char * radek
a uvnitř funkce mám ten příkaz sscanf(radek[i],"%c",&znak);
kde znak je ten jeden načtenej znak (je to ve for cyklu)

Nahlásit jako SPAM
IP: 82.208.2.–
Nefertiri
~ Anonymní uživatel
6 příspěvků
14. 11. 2010   #6
-
0
-

tak teď jsem zkoušela i

znak=radek[i];

a taky nic :-)

Nahlásit jako SPAM
IP: 82.208.2.–
KIIV+42
God of flame
14. 11. 2010   #7
-
0
-

neni mozny pokud to mas spravne inicializovany a nacteny..
bud dej kod nebo nevim jak to rozjet

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Nefertiri
~ Anonymní uživatel
6 příspěvků
14. 11. 2010   #8
-
0
-

volání v MAINu:
naplnPrvniRadek(slaveArray,sBuffer,pocetZnakuNa1Radku);

samotná fce:
int naplnPrvniRadek(char **pole,char * radek,int pocet){
int i;
char znak;
printf("\nNacitam prvni radek...\n");
for(i=0;i<pocet;i++){
znak=radek[i];
printf("Znak=%c\n",znak);
printf("\nNacteno\n");
}
}


a takhle vytvářim **pole:
char ** vytvorSlave(int radky,int sloupce){
int i;
char **p;
p=(char**)malloc(sloupce*sizeof(char*));
for(i=0;i<sloupce;i++)
p[i]=(char*)malloc(radky*sizeof(char));
return p;
}

kde radky a sloupce je pocet radku a sloupcu

Nahlásit jako SPAM
IP: 82.208.2.–
KIIV+42
God of flame
14. 11. 2010   #9
-
0
-

trosku nechapu proc v napln radek nic nikam nenaplnujes, ale rovnou nacitas z tech retezcu, ktere jeste nejsou nijak naplnene...

potom samozrejme, kdyz mas nove alokovanou pamet, tezko muzes chtit aby v ni bylo neco smysluplneho - je tam proste smeti z programu co bezely pred tim nebo podobne

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Nefertiri
~ Anonymní uživatel
6 příspěvků
15. 11. 2010   #10
-
0
-

tohle je jen kousek - celý kód je delší a složitější, tak jsem ho sem nechtěla dávat

sBuffer je ukazatel char na char pole slaveBuffer ve kterém jsou uloženy znaky přečtené z první řádky...celé se to dělá dynamicky a ještě se tam používá realloc na postupný zvětšování (proto je to tak dlouhý...a k tomu si ještě proměnný pojmenovávám uplně blbuvzdorně, abych někde neudělala chybu), ale uložený to tam je dobře - když si nechám sBuffer vypsat (tedy to na co ukazuje) tak tam jsou všechny prvky správně

část kódu kde tisknu sBuffer:

for(i=1;i<=pocetZnakuNa1Radku;i++){
printf("%d ",sBuffer[i]);
}

a pokud na první řádce zadám třeba 386205
tak tenhel kus kódu vytiskne 3 8 6 2 0 5
takže v nenaplnění problém neni...

Nahlásit jako SPAM
IP: 195.113.242.–
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, 74 hostů

Podobná vlákna

Odstránenie znaku zo stringu — založil FanatiK

Přidávání znaků do stringu — založil Šťouchal

[C#] Nalezení znaku ve stringu — založil MartiniBaby

Citanie znaku zo stringu — založil ja

Moderátoři diskuze

 

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