Új hozzászólás Aktív témák
-
Karma
félisten
válasz buherton #3751 üzenetére
Még csak most üzemelem be a C környezetemet az ellenőrzéshez, de szerintem nem a write, hanem a readFile függvényed hibás.
Történetesen én akárhogy nézem, azt látom a kódban, hogy a db tömbödet a firstPart és a secondPart (stacken) egyszer létrehozott címével töltöd fel - azaz a printffel azonnal a ciklusban kiírva jól mutat, de valójában csak két stringed van a program élete végéig, és ezeket vágod felül folyton.
“All nothings are not equal.”
-
tototos
őstag
válasz buherton #3813 üzenetére
Kicsit vázolom a helyzetet, hogy most mi van készen.
.h fájl:
typedef struct{
Signal_Types name;
uint16_t id;
uint8_t pos;
uint8_t length;
uint8_t order;
float factor;
float offset;
uint16_t binValue;
float realValue;
}Signal_TypeDef;
Ezek közül a binValue és realValue-n kívül mindegyik csak egyszer kap értéket..c fájl:
static Signal_TypeDef SIGNALS[9];
uint8_t CAN_Signal_Init()
{ /*Itt kap értéket a struktúra tömb */}
uint8_t get_Signal(Signal_struct** signal)
{ /*Ezt a függvényt hívják meg a fejlesztők hogy megkapják a signal struktúrát */} -
tototos
őstag
válasz buherton #3819 üzenetére
Köszi szépen. Délután kipróbálom a dolgot.
MCU-ra írom, egy kommunikációs modul kiegészítése lesz. Azért használok pointert hogy csak egyszer legyen tárolva a struktúra, és azt lehessen átadni. Sajnos ahogy néztem, az egész struktúrát nem tudom átadni, csak egyenként az elemeket. Az lett volna jó ha tudok egy get függvényt írni ami visszaadja a struktúrát és ha valaki a struktúra elemét akarja átírni akkor beszól a fordító, vagy csak egyszerűen nem történik meg a művelet futás közben. -
buherton
őstag
válasz buherton #3824 üzenetére
Ami kimaradt: így a get függvények belül egyik adattagot sem lehet írni, csak és kizárólag olavsni. Az set-get-es függvényeknek azaz előnyük, hogy szabadon lehet változtatni az összes adattagját, viszont get a függvénnyel egyesével tudsz értékeket olvasni. Kivéve ha nem kókányolsz íly módon:
#include <stdlib.h>
#include <stdio.h>typedef struct
{
int ifoo;
char cfoo;
} fooTypeDef;int get(const fooTypeDef * const foo, int * const ibar, char * const cbar)
{
*ibar = sfoo->ifoo;
*cbar = sfoo->cfoo;
}int main(void)
{
fooTypeDef sfoo;sfoo.ifoo = 10;
sfoo.cfoo = 'a';int ibar;
char cbar;get(&sfoo, &ibar, &cbar);
printf("%i %c", ibar, cbar);return 0;
}Vagy valami ilyesmi lesz.
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... !!!
-
tototos
őstag
válasz buherton #3824 üzenetére
És olyat nem lehet hogy ne a fv visszatérési értéke legyen a változó?
ilyenre gondolok:
valami.c:
fooTypeDef localfoo;
void set(const fooTypeDef * const foo)
{
foo.ifoo=0; //ez csak egyszer hívódik meg
}
void get(const fooTypeDef ** const foo)
{
localfoo.cfoo = a+b; //ez az értékadás minden hívásnál megtörténik
*foo= &localfoo;
}
main.c //ezt hívják majd a fejlesztők
footypedef* myfoo;
get(&myfoo);
myfoo->ifoo = 5; //erre vagy hiba vagy ne hajtódjon végre
myfoo->cfoo = 4; // ez annyira nem nagy hiba mert a legközelebbi hívásnál úgyis felülíródik -
PumpkinSeed
addikt
-
buherton
őstag
válasz buherton #3927 üzenetére
Itt van egy kicsit szebb. Bár a warning okát nem értem .
#include <stdio.h>
#include <string.h>
int main(void)
{
int i;
char string[10];
char* sp = &string;
printf("Adjon meg egy max 10 karakteres szoveget\n");
gets(string);
while(*(sp++))
{
if(*sp > '0' && *sp <= '9')
{
int rep;
for(rep = 0; rep < *sp - '0'; rep++)
{
printf("%c", *(sp + 1));
}
sp++;
}
else
{
printf("%c", *sp);
}
}
printf("\n");
return 0;
}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... !!!
-
Geresics
addikt
válasz buherton #3938 üzenetére
Teljesen vakon nem vagyok, holnap vizsga, az előzőből is 40%-ot kaptam, de kell az 50%.
Egyszerűen a struktúrák valahogy kimaradtak ebben a formában.
Ilyen megoldást viszont már láttam:#include <stdio.h>
#include <string.h>
#include <limits.h>struct konyvadatok
{
char cim[50];
char szerzo[50];
struct datum
{
int ev;
int honap;
int nap;
}datum;
};void main()
{
int i,darabszam,azonosito,legkisebb_ev=INT_MAX,legkisebb_honap=12,legkisebb_nap=31;
size_t hossz;
struct konyvadatok konyvek[10];do
{
printf("\nKerem adja meg hany konyv adatat szeretne rogziteni? ");
scanf("%d",&darabszam);
}
while (darabszam>10);for(i=0;i<darabszam;i++)
{
printf("\nKerem adja meg a %d konyv cimet: ",i+1);
gets(konyvek.cim);
printf("\nKerem adja meg a %d konyv szerzojet: ",i+1);
gets(konyvek(i).szerzo);
printf("\nKerem adja meg a %d konyv kiadasanak evet: ",i+1);
scanf("%d",&konyvek(i).datum.ev);
printf("\nKerem adja meg a %d konyv kiadasanak honapjat (szammal): ",i+1);
scanf("%d",&konyvek(i).datum.honap);
printf("\nKerem adja meg a %d konyv kiadasanak napjat: ",i+1);
scanf("%d",&konyvek(i).datum.nap);
}
for (i=0;i<darabszam;i++)
{
if ((konyvek(i).datum.ev)<(legkisebb_ev))
{
legkisebb_ev=konyvek(i).datum.ev;
azonosito=i;}
if (((konyvek(i).datum.ev)==(legkisebb_ev)) && ((konyvek(i).datum.honap)<(legkisebb_honap)))
{
legkisebb_honap=konyvek(i).datum.honap;
azonosito=i;
}
if ((konyvek(i).datum.ev)==(legkisebb_ev) && (konyvek(i).datum.honap)==(legkisebb_honap) && (konyvek(i).datum.nap)<(legkisebb_nap))
{
legkisebb_nap=konyvek(i).datum.nap;
azonosito=i;
}
}
i=azonosito;
printf("\nA legregebbi kiadasu konyv: %s",konyvek(i).cim);
printf("\nA szerzoje: %s",konyvek(i).szerzo);
printf("\nA kiadas datuma: %d.%d.%d\n",konyvek(i).datum.ev,konyvek(i).datum.honap,konyvek(i).datum.nap);
system("pause");
}*MOTOROS CSATORNA* youtube.com/MotorosVandor
-
skylaner
senior tag
válasz buherton #3938 üzenetére
Szerintem először is az algoritmikus gondolkodást kellene elsajátítani.
Ha ez meg van akkor az már teljesen másodlagos dolog, hogy hogyan, milyen nyelven, milyen szintaktikával írod le a megtervezett, elképzelt kódot.Ezekhez a feladatokhoz nem kell semmi más mint egy kis algoritmikus gondolkodás, ráadásul favágó módszerrel könnyen megoldhatók.
Mondjuk vizsga előtt illő lenne (nem csak akkor) tisztában lenni az alapvető adat struktúrákkal
-
Jester01
veterán
válasz buherton #3968 üzenetére
Igen, a C szabvány ezt meg is említi:
"In a freestanding environment (in which C program execution may take place without any benefit of an operating system), the name and type of the function called at program startup are implementation-defined."Például gcc fordítónak van is rá kapcsolója, -ffreestanding. Ha ezt megadod akkor nem is reklamál a void main miatt.
[ Szerkesztve ]
Jester
-
Jester01
veterán
válasz buherton #3970 üzenetére
A "type" az a teljes prototípus, visszatérési értékkel együtt.
Továbbá:
The effect of program termination in a freestanding environment is implementation-defined.Tulajdonképpen a main ezzel elvesztette a speciális mivoltát. Lehet, hogy nem is ott indul a program, és nem is tudni mit kap és mit ad vissza. Csak egy mezei függvény lett.
[ Szerkesztve ]
Jester
-
PumpkinSeed
addikt
válasz buherton #4010 üzenetére
Ez lehet jó lesz nekem. És akkor még egy probléma: Hogyan tudok egy stringet tárolni egy másik stringben, ami alatt nem azt értem, hogy több dimenziós karaktertömb. Azt tudom, hogy egy pl egy string[i] helyre max 2 karaktert lehet tenni, de hogy lehetne többet?
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
Jester01
veterán
válasz buherton #4091 üzenetére
A grep kimenet alapján az ex_init4.c-ben van benne tehát a "jogos tulajdonos" ő. Ha a linker szerint az ex_task4.o-ban is benne van, az azt jelenti, hogy huncutság van, például az ex_task4.c-ben lehet egy #include "ex_init4.c". Mindenesetre valahogy belekerül abba a modulba is, azt kell kinyomozni, hogyan.
Jester
-
Karma
félisten
válasz buherton #4094 üzenetére
Hát de az nem fasza, hogy lefordítja az ex_init4-et egyszer, aztán az ex_task4-et is (amiben benne van az include miatt az ex_init4 tartalma, és ezért van benne __heap_start...), és egymás mellé rakja őket. Elég egyértelműen rossz felépítés.
Rá kell venned az Eclipse-et, hogy csak az ex_task4-et fordítsa le, vagy vedd ki az include-ot és hagyd hogy a linker tegye a dolgát.
[ Szerkesztve ]
“All nothings are not equal.”
-
aAron_
őstag
-
Karma
félisten
válasz buherton #4197 üzenetére
Már hogyne volna C stílusú ez a fajta zárójelezés. Amellett, hogy Ritchie eléggé a nyelv alkotója, nagy open source projektekben is előfordul, hogy ez a forma mellett döntenek.
De persze az is gyakori, hogy új sorba rakják. C-ben én is úgy szoktam, de ettől nem lesz univerzális igazság.
“All nothings are not equal.”
-
Karma
félisten
válasz buherton #4217 üzenetére
"Szerintem azért, mert sokan elfelejtik, hogy a realloc-nak a visszatérési értékét kell odaadni a pointernek."
Pont ezt nem szabad csinálni azelőtt, hogy megnézné az ember hogy NULL-t adott-e vissza a realloc – mert ha igen, akkor elveszted az eredeti memóriaterületet.
Ettől függetlenül se a realloctól, se a calloctól való félelmet nem értem az oktatásban, bár lehet hogy anno megmagyarázták; én meg elfelejtettem.
“All nothings are not equal.”
-
skylaner
senior tag
válasz buherton #4227 üzenetére
Dehát ez nem az strlen hibája.
Most azért ne használjak egy már megírt fgv-t mert lehet, hogy hibás paraméterrel hívom meg?
A fejlesztő feladata és felelőssége, hogy helyesen használja a fgv-ket.
Most akkor a memcpy se használjuk mert lehet, hogy a source adatszerkezet kevesebb byte-ból áll mint amit a 3. paraméterben megadtunk?Szerintem nem jó amit mondasz.
Tessék gondoskodni arról, hogy helyes paramétert adunk át a fgv-nek.
Az strlen() teljesen jól van megírva. -
tototos
őstag
válasz buherton #4248 üzenetére
Köszi Nem tudtam hogy ennyire tiltott. Azt tudtam hogy beágyazott környezetben kb halál, de most szükségem lenne rá sajnos.
Van az oprendszerben saját heap kezelő. Sajnos ez is kiakad egy ponton. Amikor fel akarom szabadítani a char** változót.
Megnéznétek a kódot, hogy biztosan jól használom a dolgokat? Sajnos valami programozási hibára gyanakszom.[ Szerkesztve ]
-
-
superfinest
tag
válasz buherton #4289 üzenetére
Igazából nekem 1-2 dologhoz kellene a programozás. pl.: San Andreas Multiplayer scripteléshez és/vagy Java alapú dolgok programozásához, úgyhogy tényleg hasznosabb lenne a Java, Pawno. Nemtudom, hogy ezt a 2 nyelvet lehet-e párhuzamosan tanulni.
Azért gondoltam először a C nyelvet tanulom, mert ez sok nyelv alapja "elvileg", javíts ha rosszul tudom. -
TheProb
veterán
válasz buherton #4402 üzenetére
Valami rémlik ezzel a lépkedős debuggal kapcsolatban, órán is csináltuk már párszor. fel lehet venni debug közben egyes változókat is külön, hogy ellenőrizzük mi van benne, stb.
Az a gond a másik fejlesztő környezettel, hogy vizsgán is VS-t kell használni, valamint ezzel is javítanak. VS nem GCC-t használ hanem valami jóval "kötekedősebb" compilert... Én eddig CodeBlocks-ban tanultam/programoztam, ami nekem sokkal jobban tetszett, de hát muszáj VS-t használni...
Egyébként, majd androiddal szeretnék foglalkozni, bár egyik ismerősöm aki várja a C-t, java-t, stb. azt mondta, hogy nem egy túlzottan átlátható nyelv... és ha nekem már/még a C-vel is gondjaim vannak akkor nemtom, hogy fog menni... Persze remélem megfogom majd rendesen érteni az egész program írási "létformát", sajnos 1 félév után még szinte teljesen tudtatlan vagyok (mint ahogy az látszik is )
(#4403) Karma: Megfogom majd nézni akkor azt a ..._s verziót
"Boba is Mickey, Mickey is Boba" - Finkle Einhorn | PC Rig: https://pcpartpicker.com/b/bBy48d
-
TheProb
veterán
válasz buherton #4407 üzenetére
értem, ez kis könnyedséget adott most, remélem a java akkor jobban fog tetszeni.
Egyébként ti milyen nyelveket ajánlanátok? Mit érdemes tanulni? Tudom, hogy ez megint csak 1 nagyon szubjektív dolog, de pl. mi a véleményetek a c++ (bár úgy tudom ez nagyon expert programozóknak ajánlott csak), vagy a .net-ről?
Azt tudom, hogy a java-t azért mondják relatív könnyűnek, mert OOP nyelv, de pl a .Net-ről nemtok semmit, meg a c++-ról is csak annyit, mint amit előbb leírtam (ergó semmit)[ Szerkesztve ]
"Boba is Mickey, Mickey is Boba" - Finkle Einhorn | PC Rig: https://pcpartpicker.com/b/bBy48d
-
TheProb
veterán
-
alapz@j
tag
válasz buherton #4409 üzenetére
Ööö, ööö. A Java nem feltétlenül lassú és nem is foglal feltétlenül sok memóriát. 2000-ben ez így volt, ma már nincs - és az Oracle-höz sem vagy kötve mert van még egy tucatnyi másik implementáció. Az oracle-ös HotSpot csak a reference. A C++ platformfüggetlensége pedig megint csak kérdőjeles, mert a cout << "Hello World" tuti működik minden rendszeren, de ha elkezded benne meghívni az OS API függvényeit (mert egy natív GUI-t építesz), akkor máris ugrott a függetlenség.
-
Karma
félisten
válasz buherton #4416 üzenetére
A legtöbb nyelv platformfüggetlen. A tényleges munkavégzéshez bevonzott frameworkök meg nem (merthát lehet több féléven át helloworldözni STL-el, de a valóságban azért hálózat, adatbázis, IPC, meg ki tudja mi jön szembe). És máris nem olyan fontos szempont.
Meg ugye a Linux desktop kit érdekel </troll>
A Vuze mindig Java-alapú volt szerintem, még Azureus korában is. Az OpenOffice meg főleg natív, Java kiegészítésekkel.
[ Szerkesztve ]
“All nothings are not equal.”
-
dabadab
titán
válasz buherton #4416 üzenetére
"vagy ott a Minecraft. Amilyen egyszerű a grafikája olyannyira erőforrás zabáló."
Nekem nagyon ugy tunik, hogy a Minecraft grafikaja leginkabb amiatt zabalja az eroforrasokat, mert rengeteg poligont hasznal (es ezt nem nagyon lehet megkerulni).
[ Szerkesztve ]
DRM is theft
-
alapz@j
tag
válasz buherton #4416 üzenetére
A Minecraft teljesen alap Java-OpenGL bridge-t használ, azaz a megjelenítést a hardver végzi, ha simán portolnák C/C++-ra, nem gyorsulna érdemben - az értékelhető gyorsuláshoz az egész engine-t újra kellene írni. Hozzáteszem, igen régi gép kell már ahhoz, hogy a Minecraft gondban legyen, utoljára talán a csajom core2duo+intel hd kombós gépén láttam szaggatni...
Ú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!
- CASIO órák kedvelők topicja!
- Kertészet, mezőgazdaság topik
- AMD Ryzen 9 / 7 / 5 / 3 3***(X) "Zen 2" (AM4)
- iPhone topik
- Sorozatok
- Diablo 3
- Villanyszerelés
- Kerékpárosok, bringások ide!
- Újabb Samsungok telepíthetik a Galaxy AI-t
- bb0t: Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest