C почетник - текстуална променљива или шта је већ

Registrovan Korisnik

Zainteresovan član
Poruka
239
почео сам да се интересујем за овај језик, па узео мало да програмирам
сад сам дошао до дела да правим неку, назовимо игрицу, али заглавио сам се
занима ме како направити променљиву као што су float, double, unsigned, int... али да се не ради са бројевима него са текстом. знам да се треба употребити char који је у ствари за један карактер, ал нешто сам тражио по интернету па сам наишао на char[broj karaktera] и онда узео да експериментишем и успео сам ово да напишем

Kod:
#include <stdio.h>
main(){
       char tekst[2];
       printf("Da li je ovo programski jezik C?"); /*pitanje*/
       scanf("%s", &tekst); /*dodeljivanje vrednosti promenljivoj*/
       if(tekst == "da" ){ /*ako je vrednost promenljive "da"*/
          printf("tacno"); /*na ekranu ispisati "tacno"*/
          }
}

додељивање вредности ради, што сам и пробао: написао сам испод
Kod:
printf("%s", tekst);
и кад сам тестирао програм, после уноса текста, испод се појавио тај текст који сам укуцао, али неће да изађе текст "тачно"..
изгледа да нисам добро написао услов, па ако неко може да ме исправи, био бих много захвалан

поздрав
 
to ti je problem do chara.Char je samo 1 karakter znachi ne mozhe da uslov bude if tekst(sto si mu dodelio da bude char) da nego npr moze sam if(tekst == d ili 1 ili b).Samo ti ime kazhe char karakter.Ako hocesh da bude if(tekst == da) moracesh da koristish string.Mada nisam neki expert za C ali znam da je ovo tako char nikako ne mozhe da bude da.Probaj tako pa ako ne radi sacekaj neshe programere docice da ti objasne!z:D
Uzivaj i srecno!
 
али то је на неки начин као скуп карактера, у средњој загради [] се упише број карактера, и онда код scanf се убацују карактери, и кад ставим printf("%s", tekst); он испише ту вредност коју сам унео, тако да мислим да сам на добром путу до решења, само ми треба неко да ми то помогне, тражио сам решење на гомилу места, али то се нигде не спомиње, ко да није битно уопште...
хвала на помоћи :)
 
Kod:
[COLOR="RoyalBlue"]char[/COLOR] c [COLOR="Red"][[/COLOR]200[COLOR="Red"]];[/COLOR]
[COLOR="RoyalBlue"]char[/COLOR] [COLOR="Red"]*[/COLOR] pointer_for_c [COLOR="Red"]=[/COLOR] c[COLOR="Red"];[/COLOR]
[COLOR="SeaGreen"]// L E K C I J E
// LEKCIJA 1!
// pointer_for_c = memorijska adresa promenjive c!

// LEKCIJA 2!
// &pointer_for_c = memorijska adresa promenjive 'pokazivacnac' (i ako je promenjiva pokazivacnac u smislu samo sadrzalac adrese od c)

// LEKCIJA 3!
// *pointer_for_c = ono sto se nalazi na toj memorijskoj adresi[/COLOR]

[COLOR="SeaGreen"]// P R I M E R ZA LEKCIJE 1!, 2! i 3!:[/COLOR]
[B]BeskonacnaPetlja[/B]:
c[COLOR="Red"][[/COLOR]0[COLOR="Red"]][/COLOR] = '1'[COLOR="Red"];[/COLOR] [COLOR="SeaGreen"]//Inicijalizacija prvog elementa niza c[/COLOR]
c[COLOR="Red"][[/COLOR]1[COLOR="Red"]][/COLOR] = '2'[COLOR="Red"];[/COLOR] [COLOR="SeaGreen"]//Drugog...[/COLOR]
c[COLOR="Red"][[/COLOR]2[COLOR="Red"]][/COLOR] = '3'[COLOR="Red"];[/COLOR] [COLOR="SeaGreen"]//Treceg[/COLOR]

[COLOR="RoyalBlue"]if[/COLOR] [COLOR="Red"]([/COLOR][COLOR="Red"]*[/COLOR]pointer_for_c [COLOR="Red"]==[/COLOR] '1'[COLOR="Red"])[/COLOR][COLOR="SeaGreen"] //U vezi LEKCIJA 2![/COLOR]
   [COLOR="RoyalBlue"]goto[/COLOR] Test2[COLOR="Red"];[/COLOR]
[COLOR="SeaGreen"]//else[/COLOR]
[COLOR="RoyalBlue"]goto[/COLOR] BeskonacnaPetlja[COLOR="Red"];[/COLOR]
[B]Test2[/B]:
pointer_for_c [COLOR="Red"]++[/COLOR][COLOR="Red"];[/COLOR] [COLOR="SeaGreen"]//U vezi LEKCIJA1[/COLOR]
[COLOR="RoyalBlue"]if[/COLOR] [COLOR="Red"](*[/COLOR]pointer_for_c [COLOR="Red"]==[/COLOR] '2'[COLOR="Red"])[/COLOR] [COLOR="SeaGreen"]//U vezi LEKCIJA1[/COLOR]
 [COLOR="RoyalBlue"]goto[/COLOR] Test3[COLOR="Red"];[/COLOR]
[COLOR="SeaGreen"]//else[/COLOR]
[COLOR="RoyalBlue"]goto[/COLOR] BeskonacnaPetlja[COLOR="Red"];[/COLOR]
[B]Test3:[/B]
pointer_for_c [COLOR="Red"]++;[/COLOR] [COLOR="SeaGreen"]//U vezi LEKCIJA1[/COLOR]
[COLOR="RoyalBlue"]if[/COLOR] [COLOR="Red"](*[/COLOR]pointer_for_c [COLOR="Red"]!=[/COLOR] '3'[COLOR="Red"])[/COLOR] [COLOR="SeaGreen"]//U vezi LEKCIJA1[/COLOR]
[COLOR="RoyalBlue"]goto[/COLOR] BeskonacnaPetlja[COLOR="Red"];[/COLOR]
 
Ne mozes da koristis operaciju "==" na nizove (a C string je u stvari samo obican C niz).

Uslov bi trebao da ti glasi ovako:

Kod:
if( !strcmp(tekst, "da") )

Gde je strcmp funkcija koja proverava da li su dva C stringa jednake vrednosti.

http://www.elook.org/programming/c/strcmp.html

лако, једноставно и веома разумљиво и логично - најбоље решење
 
Supre bombastichno, ekstra fantastichno reshenje, meni se vishe sviđa post #10. :mrgreen:
Ali bolje ne... baš tako. : )
Šalim se, lepo ti je rekao ali...
Također imash i strcpy, strlen i sl.funkcije koje tje ti ustrebati, pa potrazzi i kako se one koriste i za shta su,
najbolje je sam provaliti uz malu pomotj, to se nikad' ne zaboravlja tako naucheno.
A ima i boljih verzija tj.sigurnijih kao npr. strncpy umesto strcpy koje štite od bafer overfloua i tako.
Hepi programing. : )
 
хахахаххахахах :D

извини стварно царе ако је испало да омаловажавам твој труд, хвала ти пуно али ја сам само почетник, не могу да разумем ништа што пишеш, сувише ми је компликовано :(
али имај на уму да сам сачувао тај твој код па кад се мало усавршим бацићу поглед :)
 
jedna samo stvar, nemoj da koristis printf za stampanje podataka tipa char nego puts kao sto je to predvidjeno (npr puts(smor); ). i 1 savet, bezi od tog jezika C, zalosno je ako neko naziva sebe "programerom", mozda ako se vrati nekoliko desetina godina unazad kroz vreme pa i ajde . . .

Da li si ti normalan????
 
Zdravo, ovde sam da pitam o nekim elementarnim stvarima o programiranju.

Nabavio sam knjigu "Sams Teach Yourself C in 24 Hours". Medjutim, najpre sam imao poteskoca, jer nisam znao osnovne komande u Command Promt-u, pa nisam ni znao kako i gde da kucam primere iz knjige.
Slucajno sam naucio da kada otvorim direktorijum u kom zelim da sacuvam program (izvrsni fajl sa ekstenzijom .exe) tu ukucam komandu edit i kada se otvori prozor u editu (ne znam kako se to zove) tu ukucam tekst programa, tj. primer iz knjige. Misem preko menija File sacuvam taj program i u imenu mu dodam .exe. Kada proverim i u windows-u, ti fajlovi postoje, a program koji sam sacuvao ima ikonicu kao izvrsni fajl. Medjutim, kada ga otvorim samo se na trenutak otvori Command Promt i prekine, a u Command Promt-u ga ne izvrsava, vec se samo vrati na direktorijum u kom je bio.
Nije mi jasno, u pocetku teksta programa postoji neka komanda #include<stdio.h>
objasnjava se u knjizi o heder fajlovima sa ekstenzijom .h, ali mi to nije jasno, da li ja treba da sam da otvorim takav fajl na koji cu se pozivati u programu ili sta vec treba da uradim, da bih nastavio, koliko-toliko da proucavam knjigu, posto sam stao na samom pocetku, a imam jaku zelju da ucim...

Hvala vam unapred za svaki savet!
 
nisam znao gdje ću pa evo ovdje da upitam...
u c++ koja je naredba za ispis ascii koda neke vrijednosti...npr. za uneseno n koja naredba ispisuje ascii od n??

Samo char promenljivu konvertujes u int i to dodelis nekoj drugoj promenljivoj tipa int:
ime_int_promenljive=(int)ime_char_promenljive;
 
Poslednja izmena:
Zdravo, ovde sam da pitam o nekim elementarnim stvarima o programiranju.

Nabavio sam knjigu "Sams Teach Yourself C in 24 Hours". Medjutim, najpre sam imao poteskoca, jer nisam znao osnovne komande u Command Promt-u, pa nisam ni znao kako i gde da kucam primere iz knjige.
Slucajno sam naucio da kada otvorim direktorijum u kom zelim da sacuvam program (izvrsni fajl sa ekstenzijom .exe) tu ukucam komandu edit i kada se otvori prozor u editu (ne znam kako se to zove) tu ukucam tekst programa, tj. primer iz knjige. Misem preko menija File sacuvam taj program i u imenu mu dodam .exe. Kada proverim i u windows-u, ti fajlovi postoje, a program koji sam sacuvao ima ikonicu kao izvrsni fajl. Medjutim, kada ga otvorim samo se na trenutak otvori Command Promt i prekine, a u Command Promt-u ga ne izvrsava, vec se samo vrati na direktorijum u kom je bio.
Nije mi jasno, u pocetku teksta programa postoji neka komanda #include<stdio.h>
objasnjava se u knjizi o heder fajlovima sa ekstenzijom .h, ali mi to nije jasno, da li ja treba da sam da otvorim takav fajl na koji cu se pozivati u programu ili sta vec treba da uradim, da bih nastavio, koliko-toliko da proucavam knjigu, posto sam stao na samom pocetku, a imam jaku zelju da ucim...

Hvala vam unapred za svaki savet!

Zasto ne prevuces neki program koji ima graficko okruzenje?
Ima ih raznih... Ja sam jedno vreme koristila dev C++ (za pocetak je ok, ali za kasnije ti ga ne preporucujem jer kompajler za neke bibliotecke f-je brljavi), imas i microsoftov visual c/c++ (takodje besplatan i mnogo bolji od gore pomenutog dev c++).

Naredba #include <stdio.h> je pretprocesorska direktiva koja sluzi da ukljuci podatke iz datoteke stdio.h u kojoj se nalaze osnovne f-je za standardni ulaz/izlaz!

Takodje pomocu include-a mozes ukljucivati razne biblioteke npr. math.h u kojoj se nalaze osnovne matematicke f-je (tipa sin,koren,eksponencijalna f-ja...),zatim string.h-f-je za rad sa stringovima itd.
A sto se tice ucenja C-a pogledaj i ovo http://www.matf.bg.ac.yu/~jtomasevic/courses/prog0708/vezbe.htm, mislim da ce ti biti od koristi i pokusaj da na netu nadjes elektronsko izdanje(ili je kupi,knjiga je odlicna) knjige Programski jezik C(Autori: Kernigen i Rici;Cetovo izdanje)!

Ako treba jos nesto slobodno pitaj!
 
Poslednja izmena:
Samo char promenljivu konvertujes u int i to dodelis nekoj drugoj promenljivoj tipa int:
ime_int_promenljive=(int)ime_char_promenljive;

Pa koliko ja znam cak ne mora ni da ga kastuje dovoljno je napisati printf("%d",c); gde je c promenljiva tipa char! ;)
A moze i da se dodeli promenljivoj tipa int i to bez cast opratora jer su u c-u ovi tipovi promenljivih saglasni
 
Poslednja izmena:

Back
Top