- iPhone topik
- Apple Watch
- A hagyományos (nem okos-) telefonok jelene és jövője
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fotók, videók mobillal
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Android alkalmazások - szoftver kibeszélő topik
- VoLTE/VoWiFi
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
Új hozzászólás Aktív témák
-
xors
senior tag
válasz
Headless #4127 üzenetére
a char[32], az ugyanúgy egy char* mutató, csak foglalva van hozzá 32db hely a memóriában.
A méret igazából csalóka mert lehet röviebb is mint a lefoglalt, stringek esetén az utolsó karakter utáni lezáró nulla ('\0') jelzi a végét, a strcmp is ezt használja.
A hiba arra utal, hogy valamiért a strcmp ki van kapcsolva, esetleg próbáld meg az#include <cstring>
std::strcmp(egyik, masik)ha így sem megy, akkor kell írni egy összehasonlító függvényt, az nem egy nagy cucc
int myStrCmp (const char *s1, const char *s2) {
const unsigned char *p1 = (const unsigned char *)s1;
const unsigned char *p2 = (const unsigned char *)s2;
while (*p1 != '\0') {
if (*p2 == '\0') return 1;
if (*p2 > *p1) return -1;
if (*p1 > *p2) return 1;
p1++;
p2++;
}
if (*p2 != '\0') return -1;
return 0;
} -
Z_A_P
addikt
-
xors
senior tag
válasz
Headless #4124 üzenetére
char* összehasonlításra ott a strcmp(const char* egyik, const char* masik) függvény. Ez tulajdonképpen a C string.
A tömböd jó úgy ahogy csináltad, const char* paramNames[4] = {//elemek}
Természetesen a char* -ok tömbjét (paramNames) végig kell nézned egyesével egy for ciklussal.Én ilyesmit csinálnék:
#include <string.h> //a strcmp -hez kell
for(int i = 0; i< 4; i++)
if(strcmp(name, paramNames[i])
//itt azt csinálsz amit akarsz velük, ekkor egyeznek megremélem tudtam segíteni
-
Headless
őstag
válasz
Headless #4123 üzenetére
A korábbi gondom megoldódott, viszont most inkább felétek való kérdésem lenne.
van egy karakter tömböm
char name[32]
nem én csináltam ez van megadva
és van egy (ezt úgy módosíthatom ahogy akarom)
const char *paramNames[4]={"ConPosX_1","ConPosY_1","ConPosX_2","ConPosY_2"};
tömböm és össze kellene hasonlítani a kettőt ha megegyezik, akkor kéne vele csinálnom valamit.
Namár most ha így szimplán if-be rakom őket nem fog megegyezni.
if(name==paramNames[i])
Próbáltam hogy a tömbömet valami olyasmi formában hozom létre, hogy
char paramNames[4][32];
paramNames[0]="ConPosX_1";csak így meg nem tudja a char [10]-et char[32]-be alakítani. Hogy kellene ezt helyesen megoldani?
Hú de el vagyok veszve itt a string/char, mutató tömbökkel sajnos ost jön elő, hogy nem vagyok képben ezekkel, próbáltam keresgélni, de sajnos nem találtam megfelelő megoldást.
-
dabadab
titán
válasz
Headless #4121 üzenetére
"hogyan tudom kiolvasni, hogy hány paraméterrel rendelkezik?"
Sehogy. Alapvetően két dolgot tudsz csinálni:
1. valahogy átadod a pointertömb mellé azt is, hogy hány eleme van
2. (és ez a javasolt) hagyod a C-s tömbökét és C++-ban C++-ban programozol, ami jelen esetben azt jelenti, hogy az STL konténerei közül használsz valamit, pl. vectort.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Samsung Galaxy S23 Plus 256 GB Kártyafüggetlen 1Év Garanciával
- ÁRGARANCIA!Épített KomPhone i5 13400F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Samsung Galaxy S22 Ultra , 8/128 GB , Kártyafüggetlen
- Azonnali készpénzes nVidia RTX 3000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- ÁRGARANCIA!Épített KomPhone i5 13400F 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest