|
[ brankec @ 19.02.2008. 20:05 ] @
| Sledeci programcic sam napisao kako bi mogao u jednu promenjivu izvuci IME a u drugu PREZIME (ime i prezime su u char IMEIPREZ). Problem mi je u tome sto prilikom ispisa na ekran osim imena i prezimena pojavljuju mi se jos neki znaci. Uzecu donji primer
IME = stanko 6 b ╩
PREZIME = misic ↑
Taj problem mogu resiti ako na pocetku inicijalizujem vrednosti sa NULL (npr. ime[7]=NULL), ali mi deluje nezgrapno. Da li iko ima bolje resenje. Nadam se da sam bio jasan.
Hvala unapred.
Code:
#include <stdio.h>
main()
{
char imeiprez[30]={'m','i','s','i','c',' ','(',' ','s','t','a','n','k','o'};
char ime[15],prezime[15];
int i,j;
i=0;
while(imeiprez[i]!=' ')
{
prezime[i]=imeiprez[i];
i+=1;
}
i+=1;
while(imeiprez[i]!=' ')
i++;
i+=1;
j=0;
while(imeiprez[i]!= 0x00)
{
ime[j]=imeiprez[i];
i+=1;
j+=1;
}
printf("\nIME = %c%c%c%c%c%c%c%c%c%c",ime[0],ime[1],ime[2],ime[3],ime[4],
ime[5],ime[6],ime[7],ime[8],ime[9]);
printf("\nPREZIME = %c%c%c%c%c%c%c%c%c%c",prezime[0],prezime[1],prezime[2],
prezime[3],prezime[4],prezime[5],prezime[6],prezime[7],
prezime[8],prezime[9]);
getchar();
}
[Shadowed: dodati [code] tagovi.]
[Ovu poruku je menjao Shadowed dana 19.02.2008. u 21:23 GMT+1] |
[ jablan @ 19.02.2008. 20:27 ] @
Sunce ti, kakav program!!!
Jel ti vera brani da koristiš stringove i for petlje?
[ brankec @ 19.02.2008. 20:55 ] @
Kao prvo : pocetnik sam u programiranju.
Kao drugo : ovaj programcic mi je orjentir za druge (mozda malo slozenije) programe.
Kao trece : cilj mi je iz DBF baze ucitati podatke i onda ih obradjivati. Zasto ne koristim string? Jer ne znam kako bih drugacije procitao (recimo u mom slucaju) podatke o imenu i prezimenu (IMEIPREZ) velicine 30 bajta. Citam ih bajt po bajt i samo radi sebe (kontrole) prikazujem te podatke na ekranu. U exe verziji nece mi trebati.
Ali reci mi kako da koristim stringove u ovom slucaju. Morao bih dodavati nul znak('\0') i onda bih zakomplikovao.
Ili ima jednostavnije resenje.
Sto se tice FOR petlje to cu morati sto pre izmeniti - vera mi to dopusta.
[ X Files @ 19.02.2008. 21:00 ] @
brankec, pretpostavljam da bih mogao da ti popravim ovaj kod da ispisuje tacno ime i prezime, ali je sam dizajn koji si pokazao jako los.
Mozda je najbolje da kazes sta zapravo hoces da postignes.
Bolje je napisati kod ponovo nego popravljati ono sto nije u startu nije dobro.
Sta ti je ZAGRADA izmedju imena i prezimena? Pretpostavljam da ti treba kod koji eliminise zagradu i uzima ono sa strana bez blankova...
Zasto si za ime i prezime predvideo 15 karaktera a hardkodiras ih u kodu (u ispisu) na 10? Sta kad imas manje od 10 slova u imenu ili prezimenu?
Zasto string uopste ispisujes kao karaktere?
Sto se tice inicijalizacije sa NULL, tu nema nista rogobatno. Ovo ce oba niza napuniti nulama u startu i eliminisati slucajan sadrzaj + ograniciti niz (da ne doje do buffer overun):
char ime[15]={0},prezime[15]={0};
[ laki_srt @ 19.02.2008. 21:05 ] @
zar je ovo tako napredna stvar:
char prezime[]={"misic"};?
ili ovo:
printf("PREZIME:%s",prezime);
btw x+=1 je isto sto i x++
i sta bi ovo predstavljalo:while(imeiprez[ i ]!= 0x00)???
[ X Files @ 19.02.2008. 21:10 ] @
To je HEX oznaka za NULL ili jednostavno 0 ;)
[ brankec @ 19.02.2008. 21:12 ] @
Moram priznati da sam nespreman izasao na forum i zbog toga se izvinjavam i trudicu se da se ovo vise ne ponovi.
Jedan deo sam objasnio prethodnom porukom a jos pojasnjenja sledi:
Cilj mi je da uzmem određene podatke iz DBF baze, obradim ih i zapisem u .EPP formatu (za poreku prijavu) u kojem recimo IME i PREZIME imaju odredjenu velicinu (recimo 15 bajta). u IMEIPREZ su podaci zapisani tako da (NAJCESCE) prvo ide prezime, pa ime oca u zagradi i ime (ali uvek ima dva razmaka sto sam koristio u uslovu).
Sto se tice inicijalizacije ja sam mislio da treba svaki bajt pojedinacno pa ce mi puno pomoci tvoj primer (char ime[15]={0},prezime[15]={0};).
[ laki_srt @ 19.02.2008. 21:20 ] @
sto se tice tvog program ti stampas ime npr sa 5 slova a u if si stavio 8puta %c,znaci odstampa ovo ime i ono sto je u memoriji,sto si i sam shvatio. moj savet ti je da prelistas malo tu tvoju knjigu(ako ucis iz neke knjige )
i potrazis lekciju stringovi,veruj mi skratices sebi muke.
i nevezano za ovu temu
sta bi ovo znacilo : a/=b/; sta mu dode ovo /?
[ brankec @ 19.02.2008. 21:55 ] @
Evo resen problem
Code:
#include <stdio.h>
main()
{
char imeiprez[30]={'m','i','s','i','c',' ','(',' ','s','t','a','n','k','o'};
char ime[15]={0},prezime[15]={0};
int i,j;
i=0;
for(i=0;imeiprez[i]!=' ';prezime[i]=imeiprez[i],i++);
i+=1;
for(;imeiprez[i]!=' ';i++);
i+=1;
for(j=0;imeiprez[i]!=0;ime[j]=imeiprez[i],i++,j++);
printf("\nIME = %s",ime);
printf("\nPREZIME = %s",prezime);
getchar();
}
Hvala svima na pomoci.
EDIT: X Files : Molim Vas da zbog preglednosti, kod upisujete između tag-ova predviđenih za to:
[code]
int main ( int argc, char *argv[] )
{
// ...
return 0;
}
[/code]
[Ovu poruku je menjao X Files dana 27.02.2008. u 18:11 GMT+1]
[ n1tr0 @ 27.02.2008. 08:34 ] @
Trebao si da koristis CODE tag-ove, ovako gde si u programu stavljao i kao index elementa ti je to prebacilo u italic font-ove.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|