Kezdőoldal » Számítástechnika » Programozás » Hogyan olvasok be C-ben...

Hogyan olvasok be C-ben stringbe majd ellenörzöm le hogy mi van benne?

Figyelt kérdés

Arra gondolok, hogy:

--

char gyumolcs;

scanf("%s",gyumolcs);

--

majd megnézem mit irtak bele, számokkal ez ugye simán valmi == valami

if(gyumolcs=="valami"){}

És ha egyezik az állítás akkor nyilván tovább fut az if hanem akkor az else



2021. jan. 18. 12:55
1 2
 1/12 anonim ***** válasza:
100%
Olvastad a klasszikust?
2021. jan. 18. 13:06
Hasznos számodra ez a válasz?
 2/12 A kérdező kommentje:
Mire gondolsz?
2021. jan. 18. 13:15
 3/12 anonim ***** válasza:
100%
2021. jan. 18. 13:18
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:
Nem, valójában 2 napja kezdtem el tanulni a nyelvet azóta egy alap feladatsort oldogatok de egyenlőre erre kérdésemre konkrét választ nem találtam sehol, ezért gondoltam felteszem konkrétan a kérdést.
2021. jan. 18. 13:25
 5/12 anonim ***** válasza:
100%

C esetében alapmű, nem nehéz megtalálni pl. PDF-ben.


Meg fogod érteni ha ezt olvasod

2021. jan. 18. 13:36
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:
Ez valahol fent van? nCore-n így elsőre nem találtam
2021. jan. 18. 13:38
 7/12 anonim ***** válasza:
87%

char gyumolcs;

scanf("%s",gyumolcs);


Ööö, ez neked lefutott? Próbáld így:


char gyumolcs[32]; // csak akkor 31 karakternél ne legyen hosszab a gyümi neve

scanf("%s",gyumolcs); // és ezen a ponton olvass utána a tömböknek és pointereknek


Nem kell a biblia, kezd valami egyszerűvel, szép sorban, pl:

[link]

2021. jan. 18. 14:52
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
100%

A deklaráció nem jó, neked char tömb kell, nem egy sima char:

char gyumolcs[32];

vagy

char * gyumolcs = malloc(32*sizeof(char));


A scanf-t felejtsd el, nem lehet neki megmondani, hogy mekkora a buffered, használd az fgets függvényt.


Az összehasonlításra az == nem úgy müködik stringekre C-ben, mint ahogy gondolod. A strncmp függvény tud összehasonlítani két stringet.



#7: még akár le is futhat, de minimum warningal:

char gyumolcs; // ez egy 8 bites szám, ugye. Nincs inicializálva, tehát az értéke nem definiált. A gyakorlatban itt egy memóriaszemét van, legyen pl: 0x15


scanf("%s", gyumolcs); // itt ugye egy pointert kéne megadni, a kérdezö meg egy 8bites chart adott meg. A C persze simán leszarja, tol rá egy integer propagationt, kiböviti pointer méretüre: ha pl 0x15 volt a memóriaszemét a gyumolcsben, akkor 0x00000015 lesz belöle. Na erre a címre a scanf megprobálja beírni a stringet, amit az user beírt. Elég valószínü, hogy ez a terület valami másnak van fentartva, jó eséllyel read-only -> valószínüleg ezen a ponton crashelni fog a program.

2021. jan. 18. 16:14
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
Köszönöm mindenkinek a segítőkészségét, mentek a zöld értékelések :D Egyre inkább kedvelem meg a C-t. Egyetem előtt úgy gondoltam nem árthat ha nem 0 tudással megyek info szakra ezért kezdtem el tanulgatni.
2021. jan. 18. 21:38
 10/12 anonim ***** válasza:
100%

Én pythonról váltottam C-re egyetem miatt(ha SZTE re mesz nyugodtan irj ram, segitek szivesen) és valóban nagy falat.


A lényeg a feladatodban, hogy C ben valójában nem létezik string, csak betűsorozat. Ezért kell char[32] nek dekralálni, ahogy a felettem lévő írta. Ami nem más mint 31 betűnek a helyfoglalása plusz egy \n karakternek, ami bár nem látszik, de a betűtömb végét jelzi. Ja és sajnos, ha spacet teszel bele(2szavas gyümölcsnév) scanf máris megbukik sajna:(. 1szót tudsz ezzel beolvasni egyszerre.

2021. jan. 19. 19:11
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!