Forumi
Home Pravila i pomoć Članovi Kalendar Današnji postovi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 07.11.2007., 22:32   #1
xx77aBs
Registered User
 
xx77aBs's Avatar
 
Datum registracije: Aug 2007
Lokacija: Osijek
Postovi: 16
c++ string podatak i scanf ...

pozdrav ljudi ... evo pokusavam ovdje nest isprogramirati u c++u i sve super ide ... i sad trebam ucitati par stringova ... bas bih htio koristiti string tip podatka ... a ne char array ... al zbog nekog razloga ovaj dolje kod mi ne radi :

Citiraj:
#include <iostream>
#include <stdio.h>

using namespace std;

string r1;

int main(void)
{
scanf("%s",&r1);

cout<<r1<<endl;

system("pause");
return 0;
}
iz nekog razloga program mi se rusi ... da li uopce funkcija scanf moze raditi s string klasom ?? ako ne moze da li postoji neki nacin na ju natjeram ? za sada sam uspio to ovako napraviti ...


Citiraj:
#include <iostream>
#include <stdio.h>


using namespace std;

string r1;
char temp[256];


int main(void)
{
scanf("%s",temp);

r1=temp;
cout<<r1<<endl;


system("pause");
return 0;
}

na taj nacin sve radi ... ali imam varijablu viska ... tj. opet koristim char array koji pokusavam zamjeniti string klasom ... da li itko ima ideje kako to napraviti ? treba mi bas taj formatirani unos ... znam da radi s cin i s getline ...
xx77aBs je offline   Reply With Quote
Staro 11.11.2007., 10:07   #2
NiGHTSEEkER
FUkARAAAAAAAa :P
Moj komp
 
Datum registracije: Oct 2007
Lokacija: zGb
Postovi: 16
hm.. ja radim u c-u, a ne u c++ ali su idensticni programi, s minimalnim razlikama.
pa zasto ne probas #include<string.h> ubaciti gore? po meni bi ovaj tvoj prvi trebao raditi...
NiGHTSEEkER je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 11.11.2007., 17:55   #3
xx77aBs
Registered User
 
xx77aBs's Avatar
 
Datum registracije: Aug 2007
Lokacija: Osijek
Postovi: 16
isto je ... ne radi ... citao sam malo ... scanf ne moze radit s stringom ... samo s char arrayom ...
xx77aBs je offline   Reply With Quote
Staro 26.11.2007., 11:42   #4
bracco
Registered User
Moj komp
 
Datum registracije: Oct 2007
Lokacija: gradu
Postovi: 4
Mozda sam malo zakasnio sa odgovorom, ali svejedno, mislim da bi trebalo vako ici:

#include <iostream>
#include <string>

using namespace std;

int main()
{
cout << "Unesi r1: " << endl;

string r1;

cin >> r1;

cout << r1 << endl;

system("pause");

return 0;
}
bracco je offline   Reply With Quote
Staro 23.01.2008., 11:53   #5
socox11
Premium
 
socox11's Avatar
 
Datum registracije: Apr 2007
Lokacija: Osijek/Široki Brijeg
Postovi: 53
mislim da nemozes koristiti cout i scanf nego cout i cin odnosno printf i scanf
__________________

socox11 je offline   Reply With Quote
Staro 14.02.2008., 03:04   #6
mc_fish
the luda ribetna
 
mc_fish's Avatar
 
Datum registracije: Aug 2004
Lokacija: Riblja mjesta u zagrebu:D
Postovi: 3,952
Citiraj:
Autor NiGHTSEEkER Pregled postova
hm.. ja radim u c-u, a ne u c++ ali su idensticni programi, s minimalnim razlikama.
pa zasto ne probas #include<string.h> ubaciti gore? po meni bi ovaj tvoj prvi trebao raditi...
string.h je header kao i isotream kao i math kao i stdio...nadalje netreba uopce srting.h jer je on samo za rad sa stringovima ilitiga strlen,strcpy,strncpy,strcmp itd...

Citiraj:
Autor xx77aBs Pregled postova
isto je ... ne radi ... citao sam malo ... scanf ne moze radit s stringom ... samo s char arrayom ...
kako nemoze? scanf("%s",&string); ne radi?
nauci raditi sa (f)scanfom i (f)prinfom...nije on samo %d,%f i %c

Citiraj:
Autor bracco Pregled postova
Mozda sam malo zakasnio sa odgovorom, ali svejedno, mislim da bi trebalo vako ici:

#include <iostream>
#include <string>

using namespace std;

int main()
{
cout << "Unesi r1: " << endl;

string r1;

cin >> r1;

cout << r1 << endl;

system("pause");

return 0;
}
tako nekako...mada mislim(ja osobno) da je kvalitetnije koristiti void main() kada se vec nista s njim ne radi, nadalje #include<conio.h> i getch(); mi je drazi od system pause...cisto zati sto system "bas i nije" c-ova funkcije

Citiraj:
Autor socox11 Pregled postova
mislim da nemozes koristiti cout i scanf nego cout i cin odnosno printf i scanf
mozes ali uz uvijet da uvrstis odgovarajucu bibliotekicu... nadalje zasto koristiti cin/cout ako ne radis s objektima tj c++,c#?!
__________________
blup

mc_fish je offline   Reply With Quote
Staro 25.02.2008., 01:16   #7
munst0r
Premium
Moj komp
 
munst0r's Avatar
 
Datum registracije: Mar 2004
Lokacija: Bjelovar/Zagreb
Postovi: 357
Citiraj:
Autor mc_fish Pregled postova
kako nemoze? scanf("%s",&string); ne radi?
nauci raditi sa (f)scanfom i (f)prinfom...nije on samo %d,%f i %c
scanf("%s", ...) ocekuje varijablu tipa char*, a ne String. scanf je izvorno funkcija Ca, a u njemu niti ne postoji String tip podataka. Umjesto toga koristi se char array.

Sama funkcija scanf je dosta "agresivna" i sarat ce po memoriji kolko god treba. Sto se nje tice mozes ti zapisat %s i u varijablu tipa int (ako to kompajler dozvoli). No, to ne znaci da radis ispravnu stvar. Dakle, scanf se ne moze koristiti za zapisivanje u string, nego samo u char array.


Citiraj:
Autor mc_fish Pregled postova
tako nekako...mada mislim(ja osobno) da je kvalitetnije koristiti void main() kada se vec nista s njim ne radi
void main() nikako i nikada nije dobra stvar. To u nekim (relativno rijetkim) situacijama moze dovesti do nekih zlih i nedobrih stvari. Cak se ni prema ANSI standardu void main() ne bi nikada trebao koristiti. Net je prepun clanaka u kojima je objasnjeno zasto je void main() nepozeljan.

Ako nista drugo, trebalo bi iz ciste pristojnosti vratiti nekakav status operativnom sustavu nakon sto se tvoj program zavrsi. A ne da jadni OS ostane zbunjen, pitajuci se sto se, dovraga, desilo tvome programu...

Citiraj:
Autor mc_fish Pregled postova
mozes ali uz uvijet da uvrstis odgovarajucu bibliotekicu... nadalje zasto koristiti cin/cout ako ne radis s objektima tj c++,c#?!
cin i cout bas i nemaju neke veze s objektima, ali imaju veze sa stringovima. Dakle, ako se koristi tip podataka String, onda se trebaju koristiti i cin i cout.
munst0r je offline   Reply With Quote
Staro 26.02.2008., 00:28   #8
mc_fish
the luda ribetna
 
mc_fish's Avatar
 
Datum registracije: Aug 2004
Lokacija: Riblja mjesta u zagrebu:D
Postovi: 3,952
Citiraj:
scanf("%s", ...) ocekuje varijablu tipa char*, a ne String. scanf je izvorno funkcija Ca, a u njemu niti ne postoji String tip podataka. Umjesto toga koristi se char array.

Sama funkcija scanf je dosta "agresivna" i sarat ce po memoriji kolko god treba. Sto se nje tice mozes ti zapisat %s i u varijablu tipa int (ako to kompajler dozvoli). No, to ne znaci da radis ispravnu stvar. Dakle, scanf se ne moze koristiti za zapisivanje u string, nego samo u char array.
stoji no %s znaci da uzima niz...pa je pogodan za stringove...zato imamo puts i gets...no opet sami scanf je jako pogodan za strukturiranje upisa/citanja itd




Citiraj:
void main() nikako i nikada nije dobra stvar. To u nekim (relativno rijetkim) situacijama moze dovesti do nekih zlih i nedobrih stvari. Cak se ni prema ANSI standardu void main() ne bi nikada trebao koristiti. Net je prepun clanaka u kojima je objasnjeno zasto je void main() nepozeljan.

Ako nista drugo, trebalo bi iz ciste pristojnosti vratiti nekakav status operativnom sustavu nakon sto se tvoj program zavrsi. A ne da jadni OS ostane zbunjen, pitajuci se sto se, dovraga, desilo tvome programu...
u skolskim primjerima se rijetko nesto vraca mainu...stoga je nepotreban int main()...a kad se prica o pristojnosti OS-a...onda bi se trebao ukljucivati critical sectione semafore dretve procese itd...no to se ne radi u ovakvim primjerima


Citiraj:
cin i cout bas i nemaju neke veze s objektima, ali imaju veze sa stringovima. Dakle, ako se koristi tip podataka String, onda se trebaju koristiti i cin i cout.
[/quote]

cin i cout dosli sa...dakle imaju veze s objektima
__________________
blup

mc_fish je offline   Reply With Quote
Staro 26.02.2008., 08:40   #9
Bubba
E Pluribus UNIX
Moj komp
 
Bubba's Avatar
 
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,750
Citiraj:
Autor mc_fish Pregled postova
nadalje #include<conio.h> i getch(); mi je drazi od system pause...cisto zati sto system "bas i nije" c-ova funkcijet
A jesi naso primjer; ako je ijedna "popularna" funkcija "neCovska", onda je to definitivno getch() i citav conio.h, koji ne da nema veze s C standardom, nego ne podlijeze niti jednom drugom standardu i iskljucivo je DOS related. Slazem se da system() mozda nije portabilna funkcija, ali je u svakom slucaju dio standardne bibilioteke i podlijeze nekim dokumentiranim pravilima.
__________________
https://2.71828182845904523536028747...966967627.com/

Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest.
Bubba je offline   Reply With Quote
Staro 26.02.2008., 13:23   #10
mc_fish
the luda ribetna
 
mc_fish's Avatar
 
Datum registracije: Aug 2004
Lokacija: Riblja mjesta u zagrebu:D
Postovi: 3,952
Citiraj:
Autor Bubba Pregled postova
A jesi naso primjer; ako je ijedna "popularna" funkcija "neCovska", onda je to definitivno getch() i citav conio.h, koji ne da nema veze s C standardom, nego ne podlijeze niti jednom drugom standardu i iskljucivo je DOS related. Slazem se da system() mozda nije portabilna funkcija, ali je u svakom slucaju dio standardne bibilioteke i podlijeze nekim dokumentiranim pravilima.

skolski primjeri...dos...get me?
__________________
blup

mc_fish je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 26.02.2008., 15:29   #11
Bubba
E Pluribus UNIX
Moj komp
 
Bubba's Avatar
 
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,750
Citiraj:
Autor mc_fish Pregled postova
skolski primjeri...dos...get me?
Kakve veze ima "DOS" sa skolskim primjerom? Ne bi vjerovao, ali danas se gotovo svi "skolski primjeri" izvode pod Windows/Linux platformom gdje nema ni "D" od DOS-a, tako da...
__________________
https://2.71828182845904523536028747...966967627.com/

Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest.
Bubba je offline   Reply With Quote
Staro 26.02.2008., 16:32   #12
Dule
Premium
Moj komp
 
Dule's Avatar
 
Datum registracije: Aug 2006
Lokacija: Zagreb
Postovi: 639
Citiraj:
Autor Bubba Pregled postova
Kakve veze ima "DOS" sa skolskim primjerom? Ne bi vjerovao, ali danas se gotovo svi "skolski primjeri" izvode pod Windows/Linux platformom gdje nema ni "D" od DOS-a, tako da...
jer "pause" je DOS (command prompt) naredba i ne radi u linux terminalu...
Dule je online   Reply With Quote
Staro 26.02.2008., 18:32   #13
Bubba
E Pluribus UNIX
Moj komp
 
Bubba's Avatar
 
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,750
Citiraj:
Autor Dule Pregled postova
jer "pause" je DOS (command prompt) naredba i ne radi u linux terminalu...
Ali *tko prica o DOS-u*?

Razgovor ide u smjeru da je system() neportabilan (sto nije istina, do na parametra), ili da budem precizniji - neportabilniji od conio.h biblioteke.

Uostalom, .
__________________
https://2.71828182845904523536028747...966967627.com/

Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest.
Bubba je offline   Reply With Quote
Staro 26.02.2008., 19:22   #14
mc_fish
the luda ribetna
 
mc_fish's Avatar
 
Datum registracije: Aug 2004
Lokacija: Riblja mjesta u zagrebu:D
Postovi: 3,952
Citiraj:
Autor Bubba Pregled postova
Kakve veze ima "DOS" sa skolskim primjerom? Ne bi vjerovao, ali danas se gotovo svi "skolski primjeri" izvode pod Windows/Linux platformom gdje nema ni "D" od DOS-a, tako da...

neznam ja sam u svom "skolovanju" imao dos i 3/486ice
doduse sad na faxu radimo pod win32 okruzenjima...
__________________
blup

mc_fish je offline   Reply With Quote
Staro 24.03.2008., 23:00   #15
mfolnovic
Registered User
Moj komp
 
mfolnovic's Avatar
 
Datum registracije: Oct 2007
Lokacija: Zagreb, Croatia
Postovi: 4
ajoj ljudi ...
string se ucitava s %s, ali gore si stavio referencu, znaci &r1, sto ne radi, da si stavio samo scanf("%s", r1), radilo bi, scanf sam overload-a r1 u *char, pa kad se ucita, spremi se normalno u string r1 ...
mfolnovic je offline   Reply With Quote
Staro 25.03.2008., 01:09   #16
munst0r
Premium
Moj komp
 
munst0r's Avatar
 
Datum registracije: Mar 2004
Lokacija: Bjelovar/Zagreb
Postovi: 357
Citiraj:
Autor mfolnovic Pregled postova
ajoj ljudi ...
string se ucitava s %s, ali gore si stavio referencu, znaci &r1, sto ne radi, da si stavio samo scanf("%s", r1), radilo bi, scanf sam overload-a r1 u *char, pa kad se ucita, spremi se normalno u string r1 ...
Ma ajde ne pricaj bedastoce... Samo ces jos zbuniti nekoga...

1) Kao sto rekoh, string tip se ne ucitava sa scanf...
2) Ovo tvoje (bez &) je jos veca glupost od originala...
munst0r je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na