Fontos linkek a C-ről:
Prog.hu-s cikkek
Prog.hu-s tudástár témák
The C Library Reference Guide
Standard C
Wikipedia
C Tutorial
Programming in C
Bevezetés a C programozási nyelvbe
Gyorskeresés
Legfrissebb anyagok
- Bemutató Spyra: akkus, nagynyomású, automata vízipuska
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
Általános témák
LOGOUT.hu témák
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [bb0t:] Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- [Re:] [btz:] Internet fejlesztés országosan!
- [Re:] [sziku69:] Szólánc.
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [Luck Dragon:] MárkaLánc
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] [antikomcsi:] Való Világ: A piszkos 12 - VV12 - Való Világ 12
- [Re:] Spyra: akkus, nagynyomású, automata vízipuska
- [Re:] Elektromos rásegítésű kerékpárok
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
- Utoljára frissítve: 2014-04-25 14:12:00
LOGOUT.hu
Hozzászólások
EQMontoya
veterán
200ft-os csapolt sör? Ugyan, BME környékén szerintem 350-400 körül lesz az alja.
Same rules apply!
sztanozs
veterán
oké, akkor marad a tesco gazdaságos
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Ver'alor
tag
Heló, olyan problémám akadt, hogy egy program elején bekérek két számot integer típusban, de ezeket a program egy bizonyos szakaszában float típusban szeretném használni. Erre van valami megoldás?
May the 4th be with you!
Karma
félisten
Természetesen van, például írsz elég egy (float) castolást ahol úgy kellene használnod. Bár szerintem az osztástól eltekintve nem sok olyan helyzet van, ahol erre szükség lehet. Mit is szeretnél ezzel elérni?
“All nothings are not equal.”
Ver'alor
tag
Eltaláltad, osztani szeretnék .
Így gondoltad:
printf ("A ket szam hanyadosa: %f", (float)a/b);
??
Csakmert így működött, köszönöm!
[ Szerkesztve ]
May the 4th be with you!
Ver'alor
tag
Heló, megint én vagyok.
Az lenne a kérdésen, hogy hogyan lehet egy számot az n-edik hatványára emelni?
Lehet, hogy ezek alap dolgok, de elég kezdő vagyok, bocsi. :/
May the 4th be with you!
kispx
addikt
Ver'alor
tag
Heló, köszi a választ, pow()-val sikerült
Még egy kérdésem lenne:
Lehet-e olyan epágazást csinálni, amiben a felhasználó nem egy számot ít be, aminek függvényében ugrik a program arra a bizonyos ágra, hanem egy szöveget ír be. Pl beítok egy országot, és kiírja annak a fővátosát, vagy valami hasonlót.
May the 4th be with you!
kispx
addikt
if (strcmp(valtozo, "Magyarorszag") == 0){
printf("Magyarorszag");
} else if (strcmp(valtozo, "Nemetorszag") == 0){
printf("Nemetorszag")
} else {
printf("Nincs ilyen orszag");
}
strcmp függvénnyel két stringet össze lehet hasonlítani.
if ... else if ... részhez egy kis leírás.
[ Szerkesztve ]
Ver'alor
tag
Köszönöm, az if else else if-ekel már ismertem, csak az strcmpt nem, de sikerült, köszönöm a gyors választ és a példát
Csak az nem annyira világos, hogy minek az az ==0 :/
[ Szerkesztve ]
May the 4th be with you!
kispx
addikt
Az strcmp 0-val tér vissza ha a két paramétere megegyezik. De a linkelt leírásban benne van.
if Return value < 0 then it indicates str1 is less than str2.
if Return value > 0 then it indicates str2 is less than str1.
if Return value = 0 then it indicates str1 is equal to str2.
Ver'alor
tag
Heló, lenne efy kicsit másmilyen jellegű kérdérem.
Most fogok kezdeni a szegedi ságvári endre gyak. gimnáziumban, mégpedig infó orientált osztályban. Hallottam, hogy tanulni fogunk programozást, és úgy gondoltam, hogy hát csak legyen már egy megalapozott tudásom, elkezdtem tanul(gat)ni a c nyelvet. Az lenne a kérdésem, hogy esetleg valaki ismer-e olyat, aki itt tanul/végzett, mert érdekelne, hogy egészen pontosan milyen programozáso nyelvet tanul(t). Meg esetleg úgy a 4 év nagyobb témaköreit, mert gondolom ottár csaktán nem tanártól függ a tananyak, mert eddig általánosban 2 évig egy olyan tanárom volt, akivel painten kellett rajzolgatni (persze volt, aki élvezte, de voltunk páran, akikkel a hajunkat téptük, hogy legyen már vége az órának )
May the 4th be with you!
EQMontoya
veterán
Hadde ma' nem is ugy hijjak!
Same rules apply!
Ver'alor
tag
Nem értem, hogy ez miért olyan fontos, de én is tudom, hogy át lett nevezve, de ha megkérdezel egy ottani diákot, hogy hova jár, 100%, hogy azt mondja, hogy a ságváriba.
May the 4th be with you!
EQMontoya
veterán
Csak trollkodok.
Same rules apply!
kispx
addikt
Nem. De lassan itt a vizsgaidőszak szóval respawnolni fog a topic
#36268800
törölt tag
Sziasztok!
Kaptam még jó pár hónapja egy RAR fájlt, ami tele van hasznos dolgokkal, de sajnos jelszóval védett, amire nem emlékszem. Akitől kaptam, nyilván tudja és meg tudnám kérdezni, DE én arra gondoltam, hogy írni kellene egy C programot (nem letölteni egy már kész szoftvert), ami megfejti nekem a jelszót. Érdekel az IT biztonság, a vírusok, a vírusok elleni védekezés, az "ethical hacking", viszont totál zöldfülű vagyok ezen a téren, még soha nem foglalkoztam ilyesmivel. Valakinek van ötlete, hogyan lehetne belekezdeni egy efféle program megírásába? Akár együtt is elkészíthetnénk, soha nem dolgoztam még csapatban, jó lenne tapasztalatot szerezni ilyen téren is.
A kihívásoktól nem riadok vissza, az idő pedig nem sürget, tehát ha csak hétvégente foglalkozunk vele néhány órát, az sem akadály!
Köszi előre is a válaszokat, üdv!
sztanozs
veterán
1. Utánanázel a RAR tömörítési eljárársnak
2. Utánanézel a RAR titkosításnak
3. Eldöntöd, hogy milyen jelszótörőt írsz (saját jelszótörő az alapoktól, vagy plugin valamelyik meglevő jelszótörőhöz)
4. Megírod
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
zka67
őstag
Szia, teljesen felesleges idő és energiapocsékolás egy filléres programot újból megírni, főleg úgy, hogy fogalmad sincs dolgokról. Próbáld ki, ha tetszik, vedd meg:
EQMontoya
veterán
Aztán vegyél egy lehetőleg minimum 32 magos vasat (több jobb), mert ez egy kiválóan párhuzamosítható feladat.
Én mondjuk tuti c++-ban írnám, és szétdobnám threadekre.
Illetve egy szint fölött érdemes letenni róla, mert a brutefocre csúnyán exponenciális lesz.
Same rules apply!
sztanozs
veterán
Én inkább bérelnék egy kis amazon cluod service kapacitást a szuperül optimalizált kódomra...
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
EQMontoya
veterán
Ha csak egyszer akarod használni, akkor az is megteszi valóban.
Same rules apply!
alapz@j
tag
Ez a probléma bonyolultabb annál, sem hogy egy szabad hétvégéden nekiállj megoldani. Ha érdekel a titkosítás, mint programozási terület, ennél egyszerűbb dologgal kezdj szerintem.
asuspc96
senior tag
Hasonló létezik mèg ?
Pl van egy nagyon erőforrás igényes programom akkor azt feltöltöm egy hasonló szerverre majd "kidobja" nekem az eredményt ?
ha rossz a topik akkor mit ajánlotok hol kérdezzem meg ezt ?
sztanozs
veterán
Nem megoldást, hanem csak számítási kapacitást tudsz venni. Nem tudsz bármit feltölteni, hogy ott majd jól megoldják.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
#36268800
törölt tag
Tudsz valamit javasolni?
alapz@j
tag
Írj egy one time pad alkalmazást. Egy hex és base64 kódolót/dekódolót. Aztán valami egyszerűbb ciphert (pl. rot13) használó kis programot. Aztán írj egy programot, amiben egy külső titkosító könyvtár (wincrypto, libnettle, openssl, akármi) egyszerű szimmetrikus titkosítását használod (xxtea, aes, chacha, stb.). Közben ismerkedj meg a secure random, a kriptográfiai hash, a keyed hash fogalmával és használatával. Ezután jöhet az authenticated titkosítás, a nyilvános kulcsú kriptográfia és a többi finomság. És mindeközben sajátítsd el azt, hogyan lehet biztonságos C programot írni, amelyik nem szivárogtat ki információkat az általa kezelt adatokról.
#36268800
törölt tag
Köszi, ez már így valami.
r4z
nagyúr
Sziasztok!
Adott egy stringet módosító függvény, elég egyszerű:
void stringedit(char *old, char *new){
if (strcmp(new, old) != 0){
free(old);
old = new;
}
else
free(new);
}
A régi string mindig adott (és mindig van tartalma), az újat egy scanf-fel olvasom be a következőképpen, mert szóközöket is tartalmazhat:
scanf(" %[^\n]", new);
A kérdésem az lenne, hogy hogyan lehetne a legelegánsabban megoldani azt, ha nem akarok változtatni az eredeti stringen, de mégis meg kell hívnom a scanf-et és a függvényt?
[ Szerkesztve ]
I don't love people. I love 911s, Astral Projection and french fries, in that order.
EQMontoya
veterán
Őszinte leszek, nekem nem sikerült megérteni a kérdésed.
Same rules apply!
r4z
nagyúr
Akkor megpróbálom szemléletesebben:
- kiírja a régi stringet a program
- új sor, jön a scanf, beolvasok egy stringet
- meghívom a stringeditet
Ha nem akarok változtatni, akkor újra le kell írnom a teljes stringet a második lépésben, ezt szeretném elkerülni mondjuk egy tab és az enter leütésével. A tabot és az entert viszont nem érzékeli érvényes inputként a scanf, így ő fut tovább, és várja a stringet.
[ Szerkesztve ]
I don't love people. I love 911s, Astral Projection and french fries, in that order.
EQMontoya
veterán
Ez ebben a formában így nem fog menni.
A scanf ignorálja a sor eleji whitespace-eket, így a \n-t is.
Ha kizárólag stringet szeretnél olvasni, akkor használj fgets-t.
És a megoldás:
Csinálsz egy ÚJ buffert. (char tömb)
Beleolvasol fgets-el.
Megnézed az új buffert. Ha csak egy "\n" van benne, akkor nem adott meg semmit a user, nem használod a stringet. Ha van benne bármi más, akkor meg használod. (okosan: strlen)
Same rules apply!
r4z
nagyúr
Köszönöm!
Sajnos buffert nem adtak (még) le előadáson, úgyhogy azt inkább még nem használom, de kipróbáltam, azt csinálja, amit szeretnék. Egyelőre átírtam a függvényt, hogy rákérdezzen külön a módosításra, majd legfeljebb felülírom ezzel.
[ Szerkesztve ]
I don't love people. I love 911s, Astral Projection and french fries, in that order.
EQMontoya
veterán
Mi ez, BME prog1?
Same rules apply!
r4z
nagyúr
Jackpot
I don't love people. I love 911s, Astral Projection and french fries, in that order.
EQMontoya
veterán
Ott végeztem én is.
Buffer == egy karakter tömb, semmi extra.
Tehát az egyikbe olvasol, a másikat használod. Ha nem olvastál be semmi értelmeset, akkor nem csinálsz semmit, ha beolvastál valami értelmeset, akkor a beolvasós tömb tartalmát átmásolod a másikba (strcpy).
Same rules apply!
Szirikee
újonc
Sziasztok.
Lenne egy fájlkezeléses problémám... Egy .dat kiterjesztésű fájlból olvasunk be adatokat. Pár diáknév van minden egyes sorban, és mellettük szóközzel tagolva a kapott érdemjegyük. A programban (amit bemásoltam) már megvannak az egységes számítások (az egész osztályra nézve), viszont az lenne a következő feladatunk, hogy minden egyes diákot nézzünk végig, és :
- irassuk ki az átlagukat (fejenként, egységesen már megvan)
- vizsgáljuk meg azt, hogy mekkora a legjobb átlag, és hogy kié.
Itt az eddig megírt algoritmus (lejjebb személtetem a .dat kiterjesztésű fájlt is!):
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
int main() {
int n,db_nev;
float db_jegy,jegy_ossz;
string s,nev;
cout << "A jegyek.dat-bol olvasunk be." << endl;
ifstream f;
f.open("jegyek1.dat");
if (f.fail())
{
cout << "Hiba megnyitas soran" << endl;
cin.get();
return 1;
}
db_nev=0;
db_jegy=0;
jegy_ossz=0;
while(!f.eof())
{
f>>s;
n=atoi(s.c_str());
if (n==0)
{
db_nev++;
cout<<endl<<s<<" ";
}
else
{
db_jegy++;
jegy_ossz=jegy_ossz+n;
cout<<s<<" ";
}
}
f.close();
cout<<endl<<endl<<"Nevek szama: "<<db_nev<<endl;
cout<<"Jegyek szama: "<<db_jegy<<endl;
cout<<"Jegyek osszege: "<<jegy_ossz<<endl;
cout<<"Az osztaly atlaga: "<<jegy_ossz/db_jegy<<"\n"<<endl;
cin.get();
return 0;
}
.DAT KITERJESZTÉSŰ FÁJL:
Andi 4 4 3 5
Bela 4 5 4 3
Geza 2 2 4 4
Aladar 3 1 4 5
Eva 5 5 5
Eszter 3 3 5 4
Sandor 4 5 3 2
Előre is köszönöm a válaszokat!
EQMontoya
veterán
Csak két probléma van:
1, Nem tettél fel kérdést
2, A kódod c++, aminek inkább a c++ topikban van a helye.
Same rules apply!
dabadab
titán
"Adott egy stringet módosító függvény, elég egyszerű:"
...és hibás Az "old = new" rész egyáltalá nem azt csinálja, amit te szeretnél, azok csak a stringedit két lokális változóját módosítják, nem a paraméternek megadottakat.
Ezenkívül az elég rossz gyakorlat, hogy hagysz nem feltűnően érvénytelen pointerek, márpedig amikor lefut ez a függvény, utána nem fogod tudni azt, hogy a new az érvényes-e, ezért ilyen esetekben nagyon praktikus lenullázni (plusz ez segít abban, hogy gyorsabban kibukjon az, ha ezután valahol mégis használni akarnád, annak ellenére, hogy érvénytelen).
Ja, és én a magam részéről a "new" használtatát kerülném még C kódban is.
DRM is theft
maestro87
őstag
Sziasztok!
Lenne pár kérdésem egy gyári függvénnyel, mivel nem vagyok egy programozó zseni.
1. while (WR) continue; kifejezésbe minek a continue? Szerintem tök felesleges, vagy mégsem?
2. #define EEPROM_READ(addr) ((EEADR=(addr)),(RD=1),EEDATA)
Ezt sem tudom értelmezni, hogy miért vesszővel és nem pontos vesszővel vannak elválasztva egymástól az utasítások.
Ráadásul ezt egy függvény return-nal meghívja: return EEPROM_READ(addr);
És elvileg az EEDATA-val kellene hogy visszatérjen, szóval miért nem egyszerűen return EEDATA?
Valaki elmagyarázná ezt nekem?
Karma
félisten
1) Nekem is feeslegesnek tűnik, mintha nem akartak volna üres zárójeleket írni.
2) A vessző egy alap C operátor, azt jelenti, hogy sorban végrehajtja a három műveletet, és az utolsónak az eredményét adja vissza. Az első két tag elég fontos, ezzel címezi meg az EEPROM adott celláját és engedélyezi az olvasást – ezek nélkül a harmadik tagnak semmi értelme.
[ Szerkesztve ]
“All nothings are not equal.”
maestro87
őstag
Köszi, ezt így utólag sejtettem, csak sosem láttam/használtam még ezt a módszert. De most már fogom tudni és használni is fogom, hogy más kezdőknek se legyen egyértelmű az ÉN kódom.
Most találtam még egy számomra értelmetlen felesleges utasítást:
EEADRH = (badd >> 8) & 0x03;
EEADR = (badd & 0x0ff);
1024 byte-os EEPROM, azaz 10 bites a cím, ezt osztja ketté (8+2 bit). Itt szintén feleslegesnek érzem, hogy 1-esekkel (&0x03, &0xff) 'és'-eli a cím biteket. Mert ha 1 volt, akkor 1 marad, ha meg 0 volt, akkor 0 marad. Kíváncsi lennék, hogy mikor írják a programot a nagy cégek programozói (pl. Microchip), milyen előre megfontolt szándékból tesznek be ilyen felesleges utasításokat? Azért egy 'és' kapcsolat is csak helyet foglal a szűkös program memóriában...
[ Szerkesztve ]
kispx
addikt
A 0x0ff-vel való 'és'-elés kell, mert ez távolítja el a 10 bites cím első két bitjét.
0x03-mal való 'és'-elésre miértjére egyelőre nem tudok választ adni. Akkor látnám értelmét, hogy ha a 11. 12. ... biteket is ki szeretné nullázni.
buherton
őstag
Hülyeség ellen védenek a maszkolással. Érdemes rászokni, mert sok bosszságtól kímél meg.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
zka67
őstag
A Keil ARM C fordítója pl. figyelmen kívül hagyja az 0xFF-el történő maszkolást, ha 8 bites a cél operandus, azaz nem tesz bele feleslegesen még egy utasítást a lefordított kódba. De én is mindig beleírom a forráskódba, mert így értelmezhetőbb a program.
maestro87
őstag
A 'badd' az egy 16 bites unsigned int változó. Az 'EEADR' az meg 8 bites regiszter. Szerintem így is úgy is elvész a felső bájt, nem? A 11. 12. ... bit meg nem is írható/olvasható.
buherton: Értem, megpróbálok akkor rászokni, de mi zavarhatja be ezt az egyszerű műveletet?
Meg van valamilyen iromány erről (lehetőleg magyar), hogy milyen esetekben célszerű ezt alkalmazni?
(#5446) zka67: Szerintem meg csak megzavarja az egyszerű embert.
buherton
őstag
Írásra törlődő regiszterek esetén határozottan célszerű a maszkolás, vagy ha nem direktben egy címre írsz, hanem mondjuk egy struktúra pointer által mutatt pointerre, ahol már nincs castolás, és kapásból memória korrupció léphet fel. Ez kvázi egy ököl szabály, hogy csak azokat a biteket engedjük át, ami valós értéket képviselnek. A többi maszkoljuk.
Közben eszembe jutott még egy példa. Mi van ha a változó értéke éppenséggel -1? Az egész változó tele van 1-esekkel.
MOD: ilyenekre nincs iromány.
[ Szerkesztve ]
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
maestro87
őstag
Akkor megpróbálok rászokni erre ha már a dohányzásra nem sikerült. Bár még most sem teljesen világos az oka, de talán majd idővel rájövök.
[ Szerkesztve ]
Téma tudnivalók
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Mai Hardverapró hirdetések
prémium kategóriában
ingyenes kategóriában
- Apple iPhone 12 Pro Max, Pacific Blue, 128Gb, független 86% akku
- Szuper Akció:Igényeseknek-Exkluziv-12Genes-Core i7-Dell Latitude 5430-Harmad áron-garival!!!
- Western Digital 6TB NasWare 3.0 WD60EFRX-68l0bn1 keveset használt eladó.
- ÚJ Under Armour HOVR Machina 2 futócipő,sportcipő 44-es méretben eladó
- Teljes Playstation VR szett PS5 adapterrel