Hirdetés
- sziku69: Fűzzük össze a szavakat :)
 - Luck Dragon: Asszociációs játék. :)
 - sh4d0w: Kalózkodás. Kalózkodás?
 - D1Rect: Nagy "hülyétkapokazapróktól" topik
 - gban: Ingyen kellene, de tegnapra
 - Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
 - sziku69: Szólánc.
 - Brogyi: CTEK akkumulátor töltő és másolatai
 - Mr Dini: Mindent a StreamSharkról!
 - btz: Internet fejlesztés országosan!
 
Új hozzászólás Aktív témák
- 
			
			
						kovisoft
őstag
válasz
							
							
								don_peter
							
							
								#5933
							
							üzenetére
						Ja, az eredeti hozzászólásodból az jött le, hogy a "cikkszám;darabszám" össze van téve egyetlen stringbe. Mindegy, ezzel az adatstruktúrával ugyanúgy tud menni a dolog, csak meg kell írni az összehasonlító függvényt a qsort-hoz (de persze más módon is rendezheted a tömbödet).
 - 
			
			
						kovisoft
őstag
válasz
							
							
								don_peter
							
							
								#5931
							
							üzenetére
						Egy lehetséges megoldás:
Rendezed a string tömbödet (pl. qsort). Végigmész a rendezett tömb elemein, minden elemre a stringet kettéválasztod a pontosvessző mentén (pl. strchr-rel megkeresed a ';' karaktert, és lecseréled 0-ra). Az első rész lesz a cikkszám, ezt megjegyzed, a második részt atoi-val integerré alakítod, ez a darabszám. Ha a cikkszám ugyanaz, mint az előző, akkor csak szimplán hozzáadod a darabszámot az előzőek összegéhez. Ha új cikkszámhoz értél vagy vége a tömbnek, akkor az előző cikkszámot kiírod egy új tömbbe, mellé az összeadogatott darabszámot. - 
			
			
						alapz@j
tag
 - 
			
			
						dobragab
addikt
válasz
							
							
								don_peter
							
							
								#5493
							
							üzenetére
						Szerintem te a C# topikot keresed.
Ez a bin fájl pedig, mily érdekes, nem szöveges fájl. Nem szöveg van benne. Egy hexa editorban te is meg tudod nézni. HxD a legjobb Windowsos hexa editor szerintem.
 - 
			
			
 - 
			
			
						axioma
veterán
válasz
							
							
								don_peter
							
							
								#5327
							
							üzenetére
						Ez is BCD? En ugy vadasztam egy olyanra, ami nem BCD hanem 24-60-60, marmint karoraban, de semmi normalis nem volt, most androidon van egy binaris ora widgetem, ott is felturtam vagy 20-at mire lett egy normalis ami ledumalhato a bcd kijelzesrol... (csak ne'mileg arnyalja a kepet, hogy a statuszsorban meg ugyis ott az info arab szamokkal). En mondjuk nem vagyok hw-kozeli hogy magamnak barkacsoljak.
 - 
			
			
						fraba
aktív tag
válasz
							
							
								don_peter
							
							
								#5187
							
							üzenetére
						Free sample-ként rendeltem még régebben valamelyik gyártótól vagy összesen 5 db-ot. aztán onnan maradt meg.
 De ezt (#5188) zka67 én is megjegyzem.. 
 Köszi! 
A leírását tanulmányoztam, egy egész délután játszottam az időzítésekkel, meg mindennel. Átírtam mindent, ötször megnéztem, de nem akarja az igazságot.
Ez amit belinkeltél meg nekem sajnos nem jó, az MPLAB X egy rakás hibaüzenetet küld, hogy ez nem jó meg az nem jó. De ahogy elnézem, nem véletlen. "(CCS Compiler, Microchip C18 Compiler)".
Tudom, ajándék csónak ne nézd a lapát, de... Valami ötlet?
 - 
			
			
						zka67
őstag
válasz
							
							
								don_peter
							
							
								#5187
							
							üzenetére
						Szia, én innen szoktam venni a szenzorokat:
IC DS18B20 TO-92 DALLAS Thermometer Temperature Sensor NEW GOOD QUALITY
 - 
			
			
						jattila48
aktív tag
válasz
							
							
								don_peter
							
							
								#5162
							
							üzenetére
						Hirtelen ez jutott eszembe, de biztos van gyorsabb módszer is:
unsigned char reverse_bits(unsigned char x)
{
unsigned char y=0;
y=y | ((x & 0x80) >> 7);
y=y | ((x & 0x40) >> 5);
y=y | ((x & 0x20) >> 3);
y=y | ((x & 0x10) >> 1);
y=y | ((x & 0x8) << 1);
y=y | ((x & 0x4) << 3);
y=y | ((x & 0x2) << 5);
y=y | ((x & 0x1) << 7);return y;
} - 
			
			
						EQMontoya
veterán
válasz
							
							
								don_peter
							
							
								#5166
							
							üzenetére
						Hát józan paraszti ésszel nézve is 256byte-ot fogyaszt a lookup table, valamit egy indexelést hajtasz végre (ami ugye gyakorlatilag egy összeadás - tömb kezdetének címe+index).
Ez még egy kenyérpirítón is gyors lesz.Működés: a tömbben minden indexen az adott byte megfordítottja van, csak nyilván hexában van leírva.
Tehát pl.
tömb[1] = 0b00000001 megfordítása = 0b10000000 = 0x80.
tömb[17] = 0b00010001 megfordítása = 0b10001000 = 0x88. - 
			
			
 - 
			
			
						don_peter
senior tag
válasz
							
							
								don_peter
							
							
								#4983
							
							üzenetére
						Illetve kicsit hiányos volt az előző:
#define elemekszama 6
#define bitszam 64
unsigned char tomb[elemekszama][bitszam] = { { "1","0","1","0",...64db }, {}, ...6db };Ebben a formában mondjuk byte-onként fogja értelmezni (6*64byte), de a lényeg talán látható, hogy mire akartam rámutatni...
 - 
			
			
						don_peter
senior tag
válasz
							
							
								don_peter
							
							
								#4930
							
							üzenetére
						Közben megoldódott a probléma..
Nagyon egyszerű volt és ezért volt nehéz
Álljon itt a példa:printf("%s", valtozo[0]); //kiíratás sima srting egy tömbből
printf("%S", valtozo[0]); //kiíratás program memóriában tárolt (ROM) srting egy tömbből
l
Ennyi ..
 az a fránya "%S"... - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4863
							
							üzenetére
						Az RS232 aszinkron, az SPI szinkron ráadásul az előbbinél működik az egy irányú kommunikáció az utóbbinál kétirányú forgalom kötelező. Amire te gondolsz azaz UART, USART vagy USI. Lábnevek: Rx és Tx. Mint már fentebb írtam, hogy a stream redefiniálással lehet ügyködni, ha támogatja a fordító, és pont alkalmazható, mert a C ASCII alapú, ami 1 byte széles, és a soros porttól kezdve, minden periféria byte alapú.
 - 
			
			
						moseras
tag
válasz
							
							
								don_peter
							
							
								#4863
							
							üzenetére
						Üdv!
Szerintem RS232 != SPI. Van olyan, hogy HW-es RS232, HW-es SPI, HW-es I2C, HW-es CAN, stb., de ezek egymástól függetlenek. Típustól függően vagy ez, vagy az, vagy akár mind a 4 is lehet egy kontrollerben. Sőt, akár több RS232 és/vagy SPI is lehet egy-egy kontrollerben (persze itt a nagyobbakra gondolok). Szóval szerintem az RS232 teljesen független az SPI-től. Pl. a te kontrolleredben nincs RS232, de van benne 1 SPI és 1 I2C. De pl. a PIC16F1704-ben már van 1 db RS232.
Lassan offtopic leszek...
Imi.
 - 
			
			
						moseras
tag
válasz
							
							
								don_peter
							
							
								#4855
							
							üzenetére
						Üdv!
Ha
static const unsigned char ABC[40][7]
írsz, akkor (legalábbis régebben így volt) a FLASH-be, vagyis a program memóriába teszi a tömböt. Tehát fontos a const módosító. Mivel ezt te csak olvasod, ezért neked ez így megfelelő. Bár nem tudom, hogy milyen C fordítót használsz, de a Microchip PIC18-as fordítója régebben const módosító esetén a FLASH-be tette.
Imi.
 - 
			
			
						moseras
tag
válasz
							
							
								don_peter
							
							
								#4852
							
							üzenetére
						Üdv!
Talán egyszerűbb:
void karakter(unsigned char karakter, unsigned char irany){
unsigned char i;
unsigned char normal = (irany == '0');
unsigned char mask_end = normal ? 0 : 0x20;
unsigned char mask;
for(i=0; i<7; i++){
mask = normal ? 0x10 : 0x01;
while (mask != mask_end) {
if (ABC[karakter][i] & mask){
printf("o");
}else{
printf(".");
}
if(normal) {
mask >>= 1;
} else {
mask <<= 1;
}
}
printf("\n");
}
}Imi.
 - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4849
							
							üzenetére
						Mennyi RAM és flashed van? A static tömböket rakhatod a flashre is ha nincs elé RAM-od (compiler manualt kell megnézni). A számokat pl. a tömb méret for ciklus meddig menjen, azokat ajánlott #define-olni. Ez sem rossz forma mask = 0x10;, de ez olvashatóbb mask = (1<<4) és nem foglal több helyet, mert a fordító az ilyeneket kiszámolja. mask >>= 1; ez is inkább így mask = (1<<(z + 4));, mert ebből a sorból már látod, hogy a 4. bittől fölfelé akarod a biteket elérni és nem kell még feltekeni, hogy mi is volt a kiinduló érték. De ez minden rajtad, csak az olvashatóságon szeretnék segíteni.
 - 
			
			
						Jester01
veterán
válasz
							
							
								don_peter
							
							
								#4841
							
							üzenetére
						Mikrokontrolleren számíthat, hogy >> i vagy >> 1 mert előbbi lehetséges, hogy csak egy ciklusban, egyesével valósítható meg. A kiírást tehát célszerű úgy csinálni, hogy csak egyet léptetsz, az értéket (ha módosítható) vagy a maszkot.
for(i=0; i<8; i++, bitek >>= 1) {
if (bitek & 1) {
...
}
}Bizonyos esetekben a visszafelé futó ciklus is kisebb/gyorsabb lehet.
 - 
			
			
						Jester01
veterán
 - 
			
			
						axioma
veterán
válasz
							
							
								don_peter
							
							
								#4835
							
							üzenetére
						1. ha felulrol akarod, akkor bitek >> (7-i) (vagy persze megforditod a for ciklust, de akkor fiygelj hogy ne unsigned legyen, mert akkor a >0 mindig igaz)
2. a letolassal csak az also biten lesz az, amit akarsz, de felette maradtak tovabbi bitek! Ket lehetoseged van (kb. ugyanaz lesz gepi kodban ha jo az optimalizacio): vagy vizsgalod ennek a 2-es maradekat (%2), vagy szo szerint nezed az utolso bitet (bitwise and -del, azaz &1), es persze igy mar vizsgalhatod az egyenloseget az 1-gyelszerk. upsz de lassu vagyok...
 - 
			
			
						kispx
addikt
válasz
							
							
								don_peter
							
							
								#4835
							
							üzenetére
						Nincs közelembe C fodító, de...
ha eltolod balra a biteket, akkor a legutolso helyen 0 vagy 1 lesz, tehat vagy paros vagy paratlan a szam. Ezt egy modulo kepzessel meg is lehet mondani.
if(bitek>>i % 2 == 0)
paros (0)
else paratlan (1)Szerk.:
nezopont kerdese, de szerintem mindketten forditott sorrendben fogjuk megkapni a biteket - 
			
			
						Karma
félisten
válasz
							
							
								don_peter
							
							
								#4768
							
							üzenetére
						De nem egyszerűbb, ha az emberfia először lát egy ilyen rendszert működésben, amin a beágyazott programozás alapjait illetve egyszerűbb elektronikai illesztéseket gyakorolhatja? Aztán ha elég stabilnak érzi a talajt, lemásolja a kapcsolási rajzát vagy saját kútfőből épít sajátot?
dabadab egyébként jól megfogta az egyik gondolatom lényegét
 Pont arra gondoltam. A szoftveres "luxus" hiánya (OS, driverek, stb.) szerintem gyorsan megugorható, fel se merült bennem, hogy valaki úgy akarna uC-t programozni. - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4728
							
							üzenetére
						A watchdog használata nem a kód minőségétől függ, hanem a életben előforduló véletlenektől. Ha biztosra szeretnél menni a programod működése szempontjából, akkor használsz watchdogot, mert nem tudhatod, hogy az adott eszköz milyen behatásoknak lesz kitéve, illetve mikor fog az uC tévedni. Ezekre a kihatásokra csak részben lehet felkészülni szoftveres és hardveres oldalról, és a watchdog sem jelent mindenre megoldást, de az legalább a nagy részét lefedi.
 - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4725
							
							üzenetére
						Örülök, hogy meg lett. Nem ez lesz az utolsó memória elírásod. Sajnos ez tapasztalat
 .Viszont ha már szóba került, akkor a watchdogot tényleg állítsd be. A watchdog egy speciális timer, ami ha lejár, akkor pl. csinál egy szoftver reset-et és ezzel újraindul az uC. Ez akkor jön jól, ha pl. viharban kap egy tüskét a cucc és beakasztja a futást. Ekkor a timer lejár és már reseteli is. Többféle alkalmazási technikája is van a WD-nek, de az általános azaz, hogy induláskor inicializálod a WD-t, majd valamelyik ciklikus "task"-ban reseteled a timer-t, ezzel megakadályozod, hogy lejárjon a timer.
 - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4711
							
							üzenetére
						Bocsánat, nem tudtam, hogy ilyen PIC-et használsz. Valamiért egy PIC16 rémlett. 32 kB flash, 2 kB RAM már jobban mutat.
Pár észrevétel:
- SSPCON1 regisztert illetve a társait valahogy el lehet érni bájtként, és akkor nem bitekkel kell majmolni. Nem mellesleg ha jó a fordító, akkor ezeket nem optimalizálja ki és mindenegyes sor egy 2 bájtos parancs.
- *pbuf++=spi_io(0x00); -> ez így elég meredek. Inkább így
for (i=0; i < PMEMBLOCK; i++) {
*(pbuf+i)=spi_io(0x00);
}
és már mehet is a const az argumentumba és biztonságosabb is így, mert a memória címe nem változik.
- while(!SSPSTATbits.BF); -> lehet ilyeneket használni, de akkor tegyél bele watchdogot (ez önmagában ajánlott), vagy timeout-t, mert ezek nélkül a jövőben okozhat problémát.Az a probléma hogy a for cikluson belül olvas ki több lapot, vagy a while cikluson belül?
 - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4698
							
							üzenetére
						Nem nagyon látok bele, hogy mi az ami készülődik, de két dolgot hozzá fűznék. 1. amit lehet azt tedd const tömbbe, mert flash-ből mindig több van, mint RAM-ból és még akkor is megéri ha egy kicsit bonyolultabb tőle a kód. 2. nem tudom milyen projekt keretében csinálod, de szerezz be egy nagyobb uC.
 - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4683
							
							üzenetére
						Nem a két hónappal van a probléma, hiszen valahol el kell kezdeni, hanem azzal, hogy a fél fórum gyakorlatilag ugyanazt szajkózza, de kötöd az ebet a karóhoz. Hidd el ezek a jelenségek, mint pl. függvények ugyanazt a változót használják és társaik általános jelenségek nyelvtől függetlenül, és erre vannak általános megoldások is.
Assembly-ztél már?
 - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4677
							
							üzenetére
						typedef enum
{
STATE_MENU = 0u,
...
} STATE_E;
static STATE_E menu_func(void)
{
//szükséges változók nullázása
//Sok sor program kód egy while() ciklusban pereg
// returnbe azt adsz vissza, amit akarsz
....
return STATE_PROFIL_LOAD;
}
main() {
STATE_E state = STATE_MENU;
while(1)
{
switch(state)
{
case STATE_MENU:
state = menu_func();
break;
case STATE_PROFIL_LOAD:
state = profil_load();
break;
}
}
}Ha nem akarod keverni a szezont a fazonnal, akkor az állapot gép függvényeit külön modulba is rakhatod, ahol modulra lokális változókat használsz, ha a függvények között szükséges az adatáramlás. Nem tudom, hogy mit akarsz csinálni, de a 2 kB borítékolhatóan kevés lesz, de szerintem még a 4 kB is. Gondolom valamilyen LCD-t is használsz. Egy frankón megírt LCD kijelző vezérlő is ~800 B, ami semmi extrát nem tud csak szöveget ír ki, de azt kényelmesen.
Nem vagy egy könnyű eset
 
 . - 
			
			
válasz
							
							
								don_peter
							
							
								#4668
							
							üzenetére
						En ilyenkor mindenkeppen kulon kezelnem az adatokat (a menustrukturat) meg annak a kezeleset - az elobbit adatstrukturakban tarolnam es a kod csak azokat a strukturakat manipulalna - ahelyett, hogy beleirnam a programkodba a menupontokat (mert ha jol veszem ki a szavaidbol, akkor pont ezt csinalod). Ugyanis igy egyreszt joval kisebb es atlathatobb kod lesz, atlathatobbak lesznek az adatok is es a modositas is joval egyszerubb lesz.
 - 
			
			
válasz
							
							
								don_peter
							
							
								#4663
							
							üzenetére
						A goto pár helyen teljesen normális megoldás C-ben, pl. akkor, ha több, egymásba ágyazott ciklusból akarsz kiszállni vagy ha a függvényből több helyen is ki lehet szállni, viszont mindenhol meg kell csinálni ugyanazt (file-t lezárni, memóriát felszabadítani, ilyesmi).
Arra viszont, amire te akarod használni, határozottan ellenjavallt.
Az nem derült ki pontosan, hogy mi kell neked, de az egészen biztos, hogy sokkal jobb megoldások vannak rá, mint a goto. - 
			
			
						axioma
veterán
válasz
							
							
								don_peter
							
							
								#4660
							
							üzenetére
						Hat a hexaban tarolason akadt fent a szemem. Ha jol latom ezt a kovetkeztetest abbol vontad le, hogy az altalad irt (vagy valahonnan kopizott) programban a printf a %x -szel formaz... szet kene kicsit valasztani a fejedben az "ertek" (mit jelent neked), "abrazolas" (milyen modon tarolodik a memoriaban), "megjelenites" (mit latsz a kepernyon amikor lekered, ld. printf) kozott. Es akkor me'g jonnek a cast-ok, mint pl. ez a union... de szamokra is van cast, az abrazolt erteket masik ertelmezessel hasznalni.
 - 
			
			
						axioma
veterán
válasz
							
							
								don_peter
							
							
								#4653
							
							üzenetére
						En feladtam. Sajnos nem ertem mit szeretnel tudni. Remelem jon valaki, aki erti, es valaszol.
Talan me'g azt tehetnem hozza, hogy a 2 byte adatot tekintsd egy 1 jegyu 256-os szamrendszerbeli szamnak. Az egyik byte az a nullasok, a masik a 256-osok szama. Ha erre gondolsz, de nem hiszem. - 
			
			
válasz
							
							
								don_peter
							
							
								#4645
							
							üzenetére
						"Amikor ki akarok írni memóriába egy 16bites adatot akkor ott (short int) hogy tudom kiírni amikor maximum 1bájtonként tud írni a buffer regiszterbe?"
(Gondolom ez a buffer regiszter vmi i/o port)
Ertelemszeruen byte-onkent

typedef unsigned short u16;
void u16_to_port(u16 input)
{
buffer_reg = u16 & 0xff;
// write buffer
buffer_reg = u16 >> 8;
// write buffer
} - 
			
			
						axioma
veterán
válasz
							
							
								don_peter
							
							
								#4644
							
							üzenetére
						Lattam a video elejet korabban, de nem erdekelt vegig
 Vagy nem ez volt, de a kutyudre emlekszem.
Ja, akkor tenyleg 6 adatod van a kozepen is, ez nem volt vilagos.
Hozzateszem, nem vagyok ilyen hardverkozeli programozo, az elso hsz-om is csak a tarolasrol szolt.
Nem ertem mit akarsz osszevonni, megmondom oszinten... lesz x byte teruleted, arra rateszel egy olyan strukturat, amilyen illik az adatokra. Lesz benne char[] es lesz benne unsigned byte meg unsigned short. Nem ez lenne a trivialis? Vagy valamiert mindenkepp egy valamilyen tomb kene legyen?
En me'g azt nem ertem, hogy ha rogton az elejen hogy lehet 2 VAGY 3 byte/char... feltoltod ugy hogy (karakteresen) #12 akkor honnan fogod tudni, hogy igy kell olvasni, es a 2 nem az utana kovetkezo adathoz tartozik es a #1-rol van szo? Raadasul 4 bitnyi adatrol van szo... fura, vagy tovabbra se ertem, nezd el nekem.
Ha csak nagyon helyszukeben lennel, de a prog. hossza nem szamit, akkor a betuket tudnad me'g tomoriteni (mivel a billrol ha jol latom kb. 40 fele karaktert tudsz bevinni, az 6 bitbe befer; na de ezt oda-vissza konvertalgatni macera (kodterulet, hibalehetoseg...), es mindossze 4 byte roviditest ad 16 byte-nal. - 
			
			
						axioma
veterán
válasz
							
							
								don_peter
							
							
								#4639
							
							üzenetére
						Par dolgot nem ertek.
1. ha sporolni akarsz, es raadasul egyszerubben olvashato tarteruletet, akkor miert 2-3 (valtozo hossz!) karakter a sorszam, mikor befer egy byte-ba (sot, ha hexa jegykent irod le, akkor ugymond olvashato formaban is marad '1'..'9','A',...)?
2. miert nem a nev hosszan sporolsz (felteszem nem kell annyira kifejezonek lennie, regen 8 (max+3)-ba mi minden belefert
 )
3. most akkor hogyan 6 byte a ho- es idoprofil (ott karakteresen tarolsz szamot, es egy tol-ig ahol mindket szelso lehet 3 jegyu?), de 2 byte szamabrazolt az also futes? nekem maga az eredeti elkepzeles nem konzisztens - 
			
			
						buherton
őstag
válasz
							
							
								don_peter
							
							
								#4641
							
							üzenetére
						Általában a char 8 bites szokott lenni, ami ugye 1 bájt (unsigned 0 - 255). A short int 16 bites, ami ugye 2 bájt (usnigned 0 - 65535). Az int 32 bites, ami ugye 4 bájt (unsigned 0 - 4 G).
Ha te egy unsigned char-ba teszel 256-t, akkor abban a változóban 0 lesz az értékadás után, mert átvitel fog képződni (signed esetén ezt túlcsordulásnak hívják). Ha te 255-nél nagyobb számot akarsz letárolni, akkor muszáj használnod a short int-et. Vagy char tömbbe is letárolhatod, és akkor rugalmasan lehet bővíteni. Például én most SPI-al akarok meghajtani 6 shift regisztert, ahol char tömbben tárolom le az egyes shift regiszterek bájtait.
Ismerkedj meg a struktúrával. Például:
typedef struct
{
unsigned short int temperature_min;
unsigned short int temperature_max;
unsigned char foo_bar[32];
} FOO_BAR_S; - 
			
			
						Karma
félisten
válasz
							
							
								don_peter
							
							
								#4635
							
							üzenetére
						Képzavarban vagy.
A char, short, int, long, long long különböző méretű, egy számot tároló típusok. Ha nem is a száraz C szabványt, legalább a Wikipédia felsorolását nézd meg.
A méretük fix, nincs olyan hogy egy int 255 alatt csak egy, fölötte több bájt, mindig négy (tipikus fordítóknál, PC-n). A char meg mindig egy bájt. Ha nagyobb számot akarsz beleírni, mint amit ábrázolni tud, akkor átfordul az érték. Pl. unsigned char esetén 255 + 3 = 2.
Gyanús, hogy belekeverted a karakterláncokat gondolatban (char*, char[]).
 - 
			
			
						kispx
addikt
válasz
							
							
								don_peter
							
							
								#4635
							
							üzenetére
						Nem egészen.
Az egy számjegyű számokat eltudod menteni char típusba mivel egy betűből áll. A 2 vagy több karakterből álló számokhoz string kell. (és ide a lezáró nullát bele kell számolni.). (És ennél a pontnál már az 1 jegyű számokat is úgy tárold)
> "És ha 12-őt akkor az már 2bájtot igaz?"
És még a lezáró '\0' karaktert is hozzá kell számolni.> "Viszont int típusként 0-255-ig 1bájt igaz?"
Nem. Az int típusnak fix a mérete (általában 4 bájt). A charnak is fix a mérete 1 bájt. - 
			
			
						k.kristof
őstag
válasz
							
							
								don_peter
							
							
								#4635
							
							üzenetére
						A char típus mérete 1 bájt, azaz 8 bit, ez maximálisan 256-féle érték tárolására képes. Alapértelmezetten signed char a típus, ekkor [-128,+127] az ábrázolható tartomány, ha unsigned chart használsz, akkor pedig [0,255].
Ajánlom ezt a linket neked: Difference between signed / unsigned char.
 - 
			
			
						Karma
félisten
válasz
							
							
								don_peter
							
							
								#4628
							
							üzenetére
						Eszembe jutott még egy lehetőség, és akkor nem kell karakterenként vizsgálnod. Láttam, hogy van printf függvényed, így gondolom sscanf is előfordul. Ha mondjuk %d-t keresel a stringben, és az sscanf visszatérési értéke 1, akkor szám volt, ha 0, akkor meg nem sikerült.
 - 
			
			
						Karma
félisten
válasz
							
							
								don_peter
							
							
								#4625
							
							üzenetére
						Az atoi semmiképp se jó választás, hiszen ha nem számjegy karakterrel találkozik, azt simán kihagyja. A "11A" stringedre ha jól saccolom, a visszatérési érték 11.
Az elemenkénti végignézést javasolnám személy szerint, az nem túl költséges, és biztos jó eredményt ad. Mondjuk az a-zA-Z vizsgálat helyett sokkal egyszerűbb azt nézni, hogy az i-edik karakter >= '0' és <= '9'

Na meg nyilván ha == 0, akkor le kell állni a ciklussal.
alapz@j: Ha a memset ezt az intrinsic megoldást használná, nem lenne az egész optimalizáció vs. biztonság mizéria

 - 
			
			
						alapz@j
tag
 - 
			
			
						don_peter
senior tag
válasz
							
							
								don_peter
							
							
								#4607
							
							üzenetére
						Ígértem egy kis videót a programról amit írtam.
Még nem tökéletes, de rajta vagyok erősen
4x4 alfanumerikus matrix:
video link 
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Valami baja van a tápomnak
 - Minőségi ugrást hozhat a One új médiaboxa?
 - exHWSW - Értünk mindenhez IS
 - iPhone topik
 - Mindenki bukja a Blackwell chipeket, ha bejön Trump terve
 - Rendkívül ütőképesnek tűnik az újragondolt Apple tv
 - Renault, Dacia topik
 - Intel Core i3 / i5 / i7 8xxx "Coffee Lake" és i5 / i7 / i9 9xxx “Coffee Lake Refresh” (LGA1151)
 - Vezeték nélküli fejhallgatók
 - Kamionok, fuvarozás, logisztika topik
 - További aktív témák...
 
- Gamer PC RTX 3060TI I7-9700k 16GB RAM 1 TB SSD
 - ASUS ROG RTX 3060 OC 12GB GDDR6
 - Eladó vadonatúj Huawei FreeBuds Pro 4 fülhallgatók! (Bontatlan 24 hónap garancia)
 - HIHETETLEN! DE ÚJ DOBOZOS LAPTOPOK AKÁR FÉLPÉNZÉRT FÉLÁRON !!! ///////// FÉLPÉNZES LAPTOP //////////
 - Szép HP EliteBook 840 G9 "Kis Tervező" Érintős Ultrabook Fémház 14"-40% i7-1265U 32/1TB Iris Xe FHD+
 
- Sosem használt! (Cini)Minis Forum Ryzen AI 9 HX 370 AMD Radeon 890M 96 GB RAM 2 TB SSD 1 év garancia
 - GYÖNYÖRŰ iPhone 12 Mini 128GB Purple-1 ÉV GARANCIA - Kártyafüggetlen, MS3630,94% Akkumulátor
 - ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
 - ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 32/64GB DDR5 RTX 5060 8GB GAMER PC termékbeszámítással
 - Eredeti DELL 240W töltők (LA240PM160)
 
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő
						
								
							
								
								
								
								
								
 [Amugy 2048 tok jo erre, fejbol toljak a 2-hatvanyokat a gyerekek is.]
								
								
								
 Köszi! 

								
								
								
								
								
								
								
								
								
								
								
 .
								
