Почетак › Форуми › Линукс › Програмирање › Konverzija karaktera – %c
- This topic has 15 одговора, 8 гласова, and was last updated 19 years, 7 months раније by
burga.
-
АуторЧланци
-
1. фебруар 2007. у 1:12 am #52131
DVSoftware
Учесникpu bemu sunac… ladno mi nije sachuvao poruku
Ako se dobro setjam predavanja sa faksa, razmak ispred %c znachi da se ignorishu blanko i kontrolni karakteri (‘ ‘,n,r…)
1. фебруар 2007. у 3:20 am #52132BRANKKO
МодераторKod mene se u prvom slucaju ispisuje pitanje
Da li zelite novo unosenje? (D/N)
ali ako stisnem “d” prekine program, a ako stisnem bilo sta drugo, recimo “n” izbaca mi
-bash: n: command not found
😮
Drugi slucaj takodje prolazi… I jos nesto: prilikom komapjliranja GCC mi izbacujebb2.c: In function `main’:
bb2.c:4: warning: return type of ‘main’ is not `int’A sa mailim promenama, sve prolazi OKe
[code]#include/*void*/ main()
/*izbacio sam void, why pojma nemam :P*/
{
int x, y, z;
char ch;pocetak:
printf (“Unesite vrednosti promenljivih x, y i z:nn”);
scanf (“%d %d %d”, &x, &y, &z);
printf (“nx=%d | y=%d | z=%dnn”, x, y, z);printf (“Da li zelite novo unosenje? (D/N)nn”);
scanf (” %c”, &ch);
/*******************************************************************
|*umetnuo sam jedan blanko, jer se u tom slucaju filtrira uneti *|
|*sadrzaj sa tastature i hvata samo (ako se ne varam) prvi karakter*|
*******************************************************************/
if (ch == ‘d’ || ch == ‘D’)
goto pocetak;
}
[/code]1. фебруар 2007. у 9:07 am #52133maddox
Учесникpu bemu sunac… ladno mi nije sachuvao poruku
Ako se dobro setjam predavanja sa faksa, razmak ispred %c znachi da se ignorishu blanko i kontrolni karakteri (‘ ‘,n,r…)
Da, prazan prostor sam stavio da bi ignorisao beline, a sto se tice pitanja, ovo sam stavio zato sto od prethodnog scanf-a na ulazu ostaje jedan n koji ce ovaj kasnije prihvatiti kao karakter. Sto se tice ovih silnih n koje je stavio u printf-u oni nemaju veze sa scanf-om i ovim problemom koji on ima.
BRANKKO zar te Janicic nije naucio da je GOTO los 🙂
Salim se naravno, sto se tice greske koju javlja on ocekuje da mu je main tipa int, tako da na kraju zavrsetku programa ( nebitno da li se radi o returnu iz main() ili exit() iz bilo koje f-je ) vratis neku integer vrednost.
1. фебруар 2007. у 9:27 am #52134BrokeBody
УчесникI meni profesor nešto pričao da goto ne valja nešto. 😀
1. фебруар 2007. у 4:57 pm #52135jboban
Учесникrazmak ispred %c znachi da se ignorishu blanko i kontrolni karakteri
Da, ovo je rešenje. Prazno mesto na početku format stringa u scanf naredbi znači ignorisanje belina (white spaces), a to su ‘ ‘, t i n (space, tab, new line = enter).
8. фебруар 2007. у 10:40 pm #52136burga
УчесникSto se tice cinjenice da je main() int, to je zahtev standarda jezika, mada je zbog kompatibilnosti sa prethodnim verzijama jos uvek moguce koristiti void. Poenta je u tome da na kraj stavimo “return (0);” a za bilo kakav nedokumentovani pad programa, odnosno gresku koja nije ulovljena “return (n)” gde je n kod greske. Kad se program izvrsi, uvek mozemo (u POSIX sistemima) komadom “echo $?” dobiti izlaz iz poslednjeg izvrsenog programa i proveriti zasto je pao, ako padne. Pokusajte sa sledecim kodom:
[code]
#include
using namespace std;int main()
{
int kraj;
cin >> kraj;
return (kraj);
}[/code]
I videcete da vraca upravo onaj broj koji ste uneli.
Jos jedna stvar: ovo je ISO c++ program, tj. koristi iostream zaglavlje bez .h, tako da necemo dobiti ni za to upozorenje. -
АуторЧланци
Мораш бити пријављен да би поставио коментар у овој теми.