- Telekom mobilszolgáltatások
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- One mobilszolgáltatások
- Fotók, videók mobillal
- iPhone topik
- Bemutatkozott a Poco X7 és X7 Pro
- Yettel topik
- Samsung Galaxy A55 - új év, régi stratégia
- Milyen okostelefont vegyek?
- Honor Magic7 Pro - kifinomult, költséges képalkotás
-
3400 - 3301
6397 - 6001 6000 - 5901 5900 - 5801 5800 - 5701 5700 - 5601 5600 - 5501 5500 - 5401 5400 - 5301 5300 - 5201 5200 - 5101 5100 - 5001 5000 - 4901 4900 - 4801 4800 - 4701 4700 - 4601 4600 - 4501 4500 - 4401 4400 - 4301 4300 - 4201 4200 - 4101 4100 - 4001 4000 - 3901 3900 - 3801 3800 - 3701 3700 - 3601 3600 - 3501 3500 - 3401 3400 - 3301 3300 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
-
Frissítve: 2014-04-25 14:12 Téma összefoglaló
Új hozzászólás Aktív témák
-
shinodas
tag
Linux alatt régóta nem dolgoztam IDE-vel (mindent letudtam vimmel, GCC-vel és ha nagyon muszáj ddd-vel), úgyhogy konkrét értelmesebbet nem tudok mondani. Anno a KDevelop tetszett, meg van az Anjuta nevű GNOME-os cucc.
Alternatíva lehetne a Qt Creator vagy a NetBenas, de azok ugyanúgy bugosak mint a C::B... Az Eclipse-szel nem tudom mi a helyzet.
kispx: Ezt ugye viccből írtad?
Köszi szépen! Megnéztem az ajánlott programokat, hát nekem nagyon szokatlan a codeblocks után :S

-
Karma
félisten
Linux alatt régóta nem dolgoztam IDE-vel (mindent letudtam vimmel, GCC-vel és ha nagyon muszáj ddd-vel), úgyhogy konkrét értelmesebbet nem tudok mondani. Anno a KDevelop tetszett, meg van az Anjuta nevű GNOME-os cucc.
Alternatíva lehetne a Qt Creator vagy a NetBenas, de azok ugyanúgy bugosak mint a C::B... Az Eclipse-szel nem tudom mi a helyzet.
kispx: Ezt ugye viccből írtad?
-
kispx
addikt
-
shinodas
tag
-
Karma
félisten
-
shinodas
tag
warning:gdb:failed to set controlling terminal
peration not permitted
erre a hibaüzenetre valaki tud valamit? nem enged debuggolni normálisan :S -
Karma
félisten
-
Korcsii
őstag
Sziasztok!
int main()
{
char tomb[144];
int i=0;
char a=0;
while(i<145)
{
if(a>'A' && a<'z')
{
tomb[i]==a;
i++;
a++;
}
else{
a++;
}
}
return 0;
}
Azt szeretném elérni, hogy az ascii táblából az A és a z karakterek közti elemeket tegye be egy tömbbe. A tomb==a-ra nem tudom miért írja, hogy semmilyen hatása nincs, mármint, nem értem miért nem jó. És ezt a hibát is dobja "warning:gdb:failed to set controlling terminal: operation not permitted" Ubuntu alatt, codeblocksban.Más megközelítésben:
int main() {
char tomb[64];
int i = 0;
char a = 'A';
while(a < 'z') {
tomb[i++] = a++;
}
// esetleg még:
// tomb[i] = '\0';
return 0;
} -
rt06
veterán
-
shinodas
tag
jogos, de így azt írja, hogy a tömb nevű változó deklarálva van, de nem használom.

-
Karma
félisten
Sziasztok!
int main()
{
char tomb[144];
int i=0;
char a=0;
while(i<145)
{
if(a>'A' && a<'z')
{
tomb[i]==a;
i++;
a++;
}
else{
a++;
}
}
return 0;
}
Azt szeretném elérni, hogy az ascii táblából az A és a z karakterek közti elemeket tegye be egy tömbbe. A tomb==a-ra nem tudom miért írja, hogy semmilyen hatása nincs, mármint, nem értem miért nem jó. És ezt a hibát is dobja "warning:gdb:failed to set controlling terminal: operation not permitted" Ubuntu alatt, codeblocksban.Mert az == operátor az egyenlőség(-tesztelő) operátor, neked meg az = kéne, ami az értékadás.
Másrészt ha 145-ig futtatod a ciklust, frankón túlindexeled a tömböt. (0-143 a tömb lehetséges indexei).
Az ubuntus hibát passzolom.
-
shinodas
tag
Sziasztok!
int main()
{
char tomb[144];
int i=0;
char a=0;
while(i<145)
{
if(a>'A' && a<'z')
{
tomb[i]==a;
i++;
a++;
}
else{
a++;
}
}
return 0;
}
Azt szeretném elérni, hogy az ascii táblából az A és a z karakterek közti elemeket tegye be egy tömbbe. A tomb==a-ra nem tudom miért írja, hogy semmilyen hatása nincs, mármint, nem értem miért nem jó. És ezt a hibát is dobja "warning:gdb:failed to set controlling terminal: operation not permitted" Ubuntu alatt, codeblocksban. -
rt06
veterán
-
bpx
őstag
int a=5, b=2;
a= b ? b=b+(a=a+b--) : b+++--a;lehet, hogy rosszul tudom de én ezt így csinálnám:
b=b+(a=a+b--)
b értékét csökkentem eggyel, mert először az egy operandusú műveleteket hajtjuk végre,
tehát b=1
utána a=5+1, tehát a=6
utána b=1+6, tehát b=7vhogy nekem sehogy sem tűnik jónak ez az egész
akkor nézz utána mi a különbség a b-- és --b között

-
Davs
tag
int a=5, b=2;
a= b ? b=b+(a=a+b--) : b+++--a;lehet, hogy rosszul tudom de én ezt így csinálnám:
b=b+(a=a+b--)
b értékét csökkentem eggyel, mert először az egy operandusú műveleteket hajtjuk végre,
tehát b=1
utána a=5+1, tehát a=6
utána b=1+6, tehát b=7vhogy nekem sehogy sem tűnik jónak ez az egész
a= b ? blabla
Itt szerinte a==b ? blabla -ra gondoltal -
pvt.peter
őstag
Jah, megnéztem a forráskódot és az előző hozzászólásom tárgytalan.
Este van 
int main(){
int a=5, b=2;
a= b ? b=b+(a=a+b--) : b+++--a;
a b nem nulla volt azért a kif1 ? kif2 : kif3 operátor a kif2 kifejezés kiértékelődésével folytatódik.
b=b+(a=a+b--) Értékadó kifejezés a kif jobb oldalának a kiértékelődésével kezdődik.
(a=a+b--)
a = 5+2 majd a b értéke a zárójeles kif kiért. után csökken eggyel. Ez okozza, hogy a végén a két szám eggyel eltér.
b=2+6 (mert a zárójeles kifnél csökkent a b értéke eggyel)
Majd végül
a = 2+7Szerk.: (bocs a megfogalmazásért, fáradt voltam
)int a=5, b=2;
a= b ? b=b+(a=a+b--) : b+++--a;lehet, hogy rosszul tudom de én ezt így csinálnám:
b=b+(a=a+b--)
b értékét csökkentem eggyel, mert először az egy operandusú műveleteket hajtjuk végre,
tehát b=1
utána a=5+1, tehát a=6
utána b=1+6, tehát b=7vhogy nekem sehogy sem tűnik jónak ez az egész
-
Jester01
veterán
Na nem azért nem szabványos

C szabvány, 6.5.2 bekezdés:Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be read only to determine the value to be stored.
This paragraph renders undefined statement expressions such as
i = ++i + 1;Márpedig az adott kódban ilyenek vannak.
Egyébiránt GCC meg is mondja:
ph.c: In function 'main':
ph.c:5: warning: operation on 'b' may be undefined
ph.c:5: warning: operation on 'a' may be undefined
ph.c:10: warning: operation on 'd' may be undefined
ph.c:10: warning: operation on 'c' may be undefined -
kispx
addikt
Jah, megnéztem a forráskódot és az előző hozzászólásom tárgytalan.
Este van 
int main(){
int a=5, b=2;
a= b ? b=b+(a=a+b--) : b+++--a;
a b nem nulla volt azért a kif1 ? kif2 : kif3 operátor a kif2 kifejezés kiértékelődésével folytatódik.
b=b+(a=a+b--) Értékadó kifejezés a kif jobb oldalának a kiértékelődésével kezdődik.
(a=a+b--)
a = 5+2 majd a b értéke a zárójeles kif kiért. után csökken eggyel. Ez okozza, hogy a végén a két szám eggyel eltér.
b=2+6 (mert a zárójeles kifnél csökkent a b értéke eggyel)
Majd végül
a = 2+7Szerk.: (bocs a megfogalmazásért, fáradt voltam
) -
Karma
félisten
-
Jester01
veterán
-
pvt.peter
őstag
mármint én erre a két sorra gondoltam:
a=b?b=b+(a=a+b--):b+++--a;
c=d?d*=(c+=d--):d+++--c;
}a 4 változóból csak 2 eredményét tudom levezetni, a másik 2 egyáltalán nem jön ki... :S
-
pvt.peter
őstag
mármint én erre a két sorra gondoltam:
a=b?b=b+(a=a+b--):b+++--a;
c=d?d*=(c+=d--):d+++--c;
}a 4 változóból csak 2 eredményét tudom levezetni, a másik 2 egyáltalán nem jön ki... :S
-
kispx
addikt
Sziasztok!
Az alábbi programkódot letudná nekem írni vki lépésről lépésre?
(a kimenet a következő lesz: a=9, b=8, c=14, d=13)#include <stdio.h>
int main(){
int a=5, b=2;
a= b ? b=b+(a=a+b--) : b+++--a;
printf("%d, %d\n", a, b);
int c=5, d=2;
printf("\n");
c=d?d*=(c+=d--):d+++--c;
printf("%d, %d", c, d);
system("PAUSE");
return 0;
}Előre is köszönöm.
A debugnál ha mindegyik sorra adsz egy breakpointot és a változókat felveszed a watch list-be akkor megkapod.
-
pvt.peter
őstag
Sziasztok!
Az alábbi programkódot letudná nekem írni vki lépésről lépésre?
(a kimenet a következő lesz: a=9, b=8, c=14, d=13)#include <stdio.h>
int main(){
int a=5, b=2;
a= b ? b=b+(a=a+b--) : b+++--a;
printf("%d, %d\n", a, b);
int c=5, d=2;
printf("\n");
c=d?d*=(c+=d--):d+++--c;
printf("%d, %d", c, d);
system("PAUSE");
return 0;
}Előre is köszönöm.
-
rt06
veterán
Listát vagy tömböt ad vissza? Első látásra én inkább a tömbre tippelnék..
"a kerdesem az lenne, hogy a fgv masodik parametere (**handleList) mi akar lenni?"
Egy kis olvasnivaló. A tömb nulladik elemére mutató pointer címe. Pl. (Szerk.: felesleges példa, jobbat írtak, de azért meghagyom)void f(int **y)
{
cout << **y;
}
int main()
{
int *x = (int*)calloc(10, sizeof(int)); //A tömb nulladik elemére mutat
int **ptr = &x;
f(ptr); /*vagy*/
f(&x);
return 0;
}"vagyis ket int-et ad vissza az fgv" (a mondat második felét nem értettem
)Nem feltétlenül ad vissza két int-et a fv. Az első paraméter tuti, hogy egy unsigned-ra mutató pointer lesz. (Hogy módosítja az értéket vagy sem az nem derül ki, ehhez kellett volna a dokumentációs is). A második paramétert meg fent kifejtettem.
eloszor is, mindharmotoknak koszonom a gyors valaszt
a kerdesedre valaszolva pedig, az a helyzet, hogy fogalmam sincs, mit kellene visszaadnia
sajnos semminemu dokumentaciom nincs
a nagyobbik gond, hogy - bar elvileg hiba nelkul ter vissza az fgv - a count es a handleList pointer is erteke is 0, ugyhogy bar elorebb vagyok, mint eddig, sajnos tovabbra sem tudok elorebb jutnimindenesetre megegyszer koszonom a segitsegetek
-
kispx
addikt
Hi!
regen nem programoztam c-ben, akkor is csak annyit, amennyi az egyetemhez kellett, most viszont elemkerult nemi kod, es ennek megerteseben kernem a segitsegetek
adott egy ilyen az egyik .h file-ban
YW_ErrorType_T YWNATIVE_GetChannelList(U32 * uCount, U32** handleList);a YW_ErrorType_T az U32, az U32 pedig unsigned int (typedef U32 YW_ErrorType_T; typedef unsigned int U32;)
a kerdesem az lenne, hogy a fgv masodik parametere (**handleList) mi akar lenni? ahogy olvasgatom, a ** elvileg egy pointer-re mutato pointer, de ami engem zavar, hogy ez csak egy insugned int tipusu valtozora mutato pointer pointer-e lehet? vagyis ket int-et ad vissza az fgv, vagy azok ott lehetnek masok is? (az elso, az uCount az jo lenne int-nek, a masodik nem annyira - egy listat kellene valamilyen formaban visszaadnia, de nem tudom, milyen parameterekkel hivjam a fgv-t)
sajnos semminemu dokumentaciom nincs a fgv-hez
Listát vagy tömböt ad vissza? Első látásra én inkább a tömbre tippelnék..
"a kerdesem az lenne, hogy a fgv masodik parametere (**handleList) mi akar lenni?"
Egy kis olvasnivaló. A tömb nulladik elemére mutató pointer címe. Pl. (Szerk.: felesleges példa, jobbat írtak, de azért meghagyom)void f(int **y)
{
cout << **y;
}
int main()
{
int *x = (int*)calloc(10, sizeof(int)); //A tömb nulladik elemére mutat
int **ptr = &x;
f(ptr); /*vagy*/
f(&x);
return 0;
}"vagyis ket int-et ad vissza az fgv" (a mondat második felét nem értettem
)Nem feltétlenül ad vissza két int-et a fv. Az első paraméter tuti, hogy egy unsigned-ra mutató pointer lesz. (Hogy módosítja az értéket vagy sem az nem derül ki, ehhez kellett volna a dokumentációs is). A második paramétert meg fent kifejtettem.
-
Karma
félisten
Hi!
regen nem programoztam c-ben, akkor is csak annyit, amennyi az egyetemhez kellett, most viszont elemkerult nemi kod, es ennek megerteseben kernem a segitsegetek
adott egy ilyen az egyik .h file-ban
YW_ErrorType_T YWNATIVE_GetChannelList(U32 * uCount, U32** handleList);a YW_ErrorType_T az U32, az U32 pedig unsigned int (typedef U32 YW_ErrorType_T; typedef unsigned int U32;)
a kerdesem az lenne, hogy a fgv masodik parametere (**handleList) mi akar lenni? ahogy olvasgatom, a ** elvileg egy pointer-re mutato pointer, de ami engem zavar, hogy ez csak egy insugned int tipusu valtozora mutato pointer pointer-e lehet? vagyis ket int-et ad vissza az fgv, vagy azok ott lehetnek masok is? (az elso, az uCount az jo lenne int-nek, a masodik nem annyira - egy listat kellene valamilyen formaban visszaadnia, de nem tudom, milyen parameterekkel hivjam a fgv-t)
sajnos semminemu dokumentaciom nincs a fgv-hez
Mint adja magát a szignatúrából, ez a függvény kiad egy n-elemű tömböt valami channelhandle-ökről, külön a hosszt és külön egy pointert az új (és majd utána általad letörlendő!) tömbről. Jester01 abszolút jól írta a meghívását, csak gondoltam kiegészítem

Ilyen paramétert akkor szokás használni, ha a függvény fogja létrehozni azt a tömböt, ami a lekérdezés eredményét tárolja. Te csak adsz neki egy helyet, ahova a kezdőelem pointerét elteheti.
-
Jester01
veterán
Hi!
regen nem programoztam c-ben, akkor is csak annyit, amennyi az egyetemhez kellett, most viszont elemkerult nemi kod, es ennek megerteseben kernem a segitsegetek
adott egy ilyen az egyik .h file-ban
YW_ErrorType_T YWNATIVE_GetChannelList(U32 * uCount, U32** handleList);a YW_ErrorType_T az U32, az U32 pedig unsigned int (typedef U32 YW_ErrorType_T; typedef unsigned int U32;)
a kerdesem az lenne, hogy a fgv masodik parametere (**handleList) mi akar lenni? ahogy olvasgatom, a ** elvileg egy pointer-re mutato pointer, de ami engem zavar, hogy ez csak egy insugned int tipusu valtozora mutato pointer pointer-e lehet? vagyis ket int-et ad vissza az fgv, vagy azok ott lehetnek masok is? (az elso, az uCount az jo lenne int-nek, a masodik nem annyira - egy listat kellene valamilyen formaban visszaadnia, de nem tudom, milyen parameterekkel hivjam a fgv-t)
sajnos semminemu dokumentaciom nincs a fgv-hez
A második paraméter egy pointerre mutató pointer ahogy mondtad, vagyis egy pointer címe:
U32 count;
U32* handleList;
YWNATIVE_GetChannelList(&count, &handleList);
for(i = 0; i < count; i += 1) {
... handleList[i] ...
} -
rt06
veterán
Hi!
regen nem programoztam c-ben, akkor is csak annyit, amennyi az egyetemhez kellett, most viszont elemkerult nemi kod, es ennek megerteseben kernem a segitsegetek
adott egy ilyen az egyik .h file-ban
YW_ErrorType_T YWNATIVE_GetChannelList(U32 * uCount, U32** handleList);a YW_ErrorType_T az U32, az U32 pedig unsigned int (typedef U32 YW_ErrorType_T; typedef unsigned int U32;)
a kerdesem az lenne, hogy a fgv masodik parametere (**handleList) mi akar lenni? ahogy olvasgatom, a ** elvileg egy pointer-re mutato pointer, de ami engem zavar, hogy ez csak egy insugned int tipusu valtozora mutato pointer pointer-e lehet? vagyis ket int-et ad vissza az fgv, vagy azok ott lehetnek masok is? (az elso, az uCount az jo lenne int-nek, a masodik nem annyira - egy listat kellene valamilyen formaban visszaadnia, de nem tudom, milyen parameterekkel hivjam a fgv-t)
sajnos semminemu dokumentaciom nincs a fgv-hez
-
Retekegér
MODERÁTOR
conio.h és getch nem szabványos, arra van a getchar amit mellesleg a csúnya scanf helyett is használhatsz.
Ha a while ciklus már elérte a végét, akkor a getch már amúgy is fölösleges.
A tömb elem növelésénél pedig nem i-t hanem c-t kellene használni indexeléshez.
Ezen felül ajánlott kapcsoszárójeleket és áttekinthetőbb struktúrát használni.
Ja és nem formázott kiíráshoz fölösleges a printf, arra van a puts.A ctrl+z pedig elképzelhető, hogy csak üres sorban fog működni (legalábbis a linuxos ctrl+d így van) tehát előbb enter kell az aktuális sor lezárásához majd jöhet az EOF.
#include <stdio.h>
int main ()
{
int c;
int i;
int tomb[10];
puts("Fajl vege jelig (Ctrl+Z) szabvanyos bementrol olvasva");
puts("megszamoljuk, hogy hany szamjegy van a szovegben.\n");
for (i=0; i<10; i++) {
tomb[i]=0;
}
while ((c = getchar()) != EOF) {
if (c>='0' && c<='9') {
tomb[c-'0'] += 1;
}
}
for (i=0; i<10; i++) {
printf("%d: %d\n",i,tomb[i]);
}
return 0;
}Először is köszi a segítséget!

Tudom, hogy a conio.h és getch nem szabványos, a konzol ablak bezáródásának megakadályozására használom. Tudom, nem elegáns és elég noob, egyelőre magára az algoritmizálásra koncentrálok.
A tömb elem növelést tényleg elqrtam...
A megvalósításhoz innen merítettem ihletet, ott így néz ki a programkód.
-
Jester01
veterán
Bemásolom az egészet:
#include <stdio.h>
#include <conio.h>
int main ()
{
char c;
int tomb[10], i;
printf("Fajl vege jelig (Ctrl+Z) szabvanyos bementrol olvasva\n");
printf("megszamoljuk, hogy hany szamjegy van a szovegben.\n\n");
for (i=0; i<10; i++)
tomb[i]=0;
while (scanf("%c",&c)==1)
if (c>='0' && c<='9')
tomb[i-'0']++;
for (i=0; i<10; i++)
printf("%d: %d\n",i,tomb[i]);
getch();
return 0;
}conio.h és getch nem szabványos, arra van a getchar amit mellesleg a csúnya scanf helyett is használhatsz.
Ha a while ciklus már elérte a végét, akkor a getch már amúgy is fölösleges.
A tömb elem növelésénél pedig nem i-t hanem c-t kellene használni indexeléshez.
Ezen felül ajánlott kapcsoszárójeleket és áttekinthetőbb struktúrát használni.
Ja és nem formázott kiíráshoz fölösleges a printf, arra van a puts.A ctrl+z pedig elképzelhető, hogy csak üres sorban fog működni (legalábbis a linuxos ctrl+d így van) tehát előbb enter kell az aktuális sor lezárásához majd jöhet az EOF.
#include <stdio.h>
int main ()
{
int c;
int i;
int tomb[10];
puts("Fajl vege jelig (Ctrl+Z) szabvanyos bementrol olvasva");
puts("megszamoljuk, hogy hany szamjegy van a szovegben.\n");
for (i=0; i<10; i++) {
tomb[i]=0;
}
while ((c = getchar()) != EOF) {
if (c>='0' && c<='9') {
tomb[c-'0'] += 1;
}
}
for (i=0; i<10; i++) {
printf("%d: %d\n",i,tomb[i]);
}
return 0;
} -
Retekegér
MODERÁTOR
Bemásolom az egészet:
#include <stdio.h>
#include <conio.h>
int main ()
{
char c;
int tomb[10], i;
printf("Fajl vege jelig (Ctrl+Z) szabvanyos bementrol olvasva\n");
printf("megszamoljuk, hogy hany szamjegy van a szovegben.\n\n");
for (i=0; i<10; i++)
tomb[i]=0;
while (scanf("%c",&c)==1)
if (c>='0' && c<='9')
tomb[i-'0']++;
for (i=0; i<10; i++)
printf("%d: %d\n",i,tomb[i]);
getch();
return 0;
} -
Korcsii
őstag
-
Retekegér
MODERÁTOR
-
Korcsii
őstag
Ctrl+Z-re ír valamit a konzolba? ^Z vagy mit kéne... Entert ütsz utána?
-
Retekegér
MODERÁTOR
Hali!
Van egy olyan gondom, hogy ha a fájl vége jelig kell olvasni szabványos bemenetről, akkor a programban ezt kissé nehézkes ezt megadnom. Megnyomom a Ctrl+Z kombót és nem történik semmi, vagy csak többszöri lenyomás után. Mit csinálok rosszul?
-
Karma
félisten
-
Ricqy
tag
Ennyi:
open("/dev/input/uinput", O_WRONLY) = -1 ENOENT (No such file or directory)Na most két lehetőség van. Vagy a /dev/uinput alatt van ez a device (és létrehozhatsz egy symlinket a ln -s /dev/uinput /dev/input/uinput paranccsal a kívánt helyre), vagy nincs is uinput a rendszeredben...
Utóbbi esetben a modprobe uinput megérhet egy próbát, de ha nem, akkor kernelt kéne forgatnod, ami a jelen felállásban szerintem halott ügy.
Hát sajnos nem jöttek be.
Tudnál segíteni a kernel forgatásában? -
Karma
félisten
Ennyi:
open("/dev/input/uinput", O_WRONLY) = -1 ENOENT (No such file or directory)Na most két lehetőség van. Vagy a /dev/uinput alatt van ez a device (és létrehozhatsz egy symlinket a ln -s /dev/uinput /dev/input/uinput paranccsal a kívánt helyre), vagy nincs is uinput a rendszeredben...
Utóbbi esetben a modprobe uinput megérhet egy próbát, de ha nem, akkor kernelt kéne forgatnod, ami a jelen felállásban szerintem halott ügy.
-
Jester01
veterán
Rögtön az elején kezdődnek a bajok:
open("/dev/input/uinput", O_WRONLY) = -1 ENOENT (No such file or directory)
Egész egyszerűen nincs ilyen eszköz, például nincs benne a kernelben vagy nincs betöltve a szükséges modul.A kód valóban gány, mert 0 ellenőrzés van benne, pedig az open nem nullát ad vissza hiba esetén, hanem -1-et.
ufile = open("/dev/input/uinput", O_WRONLY);
if (ufile == 0) {
printf("Could not open uinput.\n"); -
Ricqy
tag
Szép. Ezek szerint az összes ezelőtti ioctl hívás is sikertelen, csak mivel gány a kód, semmilyen hibakezelés nincs hozzá.
Ki tudnád menteni az egész strace-t egy fájlba? Pl. strace valami > strace.log, ezt a fájlt meg felnyomni dropboxra? Akkor látszana az eleje is, hogy miért nem jó a file descriptor.
Gyanús, hogy az uinput nem ott van, mint ahol számítana rá.
-
Karma
félisten
Szép. Ezek szerint az összes ezelőtti ioctl hívás is sikertelen, csak mivel gány a kód, semmilyen hibakezelés nincs hozzá.
Ki tudnád menteni az egész strace-t egy fájlba? Pl. strace valami > strace.log, ezt a fájlt meg felnyomni dropboxra? Akkor látszana az eleje is, hogy miért nem jó a file descriptor.
Gyanús, hogy az uinput nem ott van, mint ahol számítana rá.
-
Ricqy
tag
Felmásoltam a strace-t manuálisan.
-
Ricqy
tag
Tudom, hogy működik, csak mielőtt bekapcsolom a grafikus felületet akkor van parancssor, de csak a grafikus felülettel töltődnek be az extra billentyűkombók.
-
Jester01
veterán
Hiába C progi, ha egyszerűen operációs rendszer szolgáltatást hív. Az lenne a minimum, hogy megtudjuk mi a hibakód.
Keríts egy arm-os strace-t (akár egy csomagból kimásolva, mivel csak egyetlen bináris) és tedd bele az image fájlba amit dd-vel másolsz. -
Karma
félisten
-
Ricqy
tag
Én azért megnézném, hogy nem lehet-e Debian csomagokat telepíteni a rendszerre (van-e pl. apt-get). Megkönnyítené az strace felhergelését
Vagy itt van egy csomag, amit a dpkg -i felrak, ha az van.Másrészről szerintem a Zipit Z2 topikja jobban megfelelne ennek a témakörnek.
Van apt-get meg dpkg is, de nincs kötőjel

Néztem a Zipit topikot, de az kihalt, és C progi, azért gondoltam, hogy ide írok. -
Karma
félisten
Én azért megnézném, hogy nem lehet-e Debian csomagokat telepíteni a rendszerre (van-e pl. apt-get). Megkönnyítené az strace felhergelését
Vagy itt van egy csomag, amit a dpkg -i felrak, ha az van.Másrészről szerintem a Zipit Z2 topikja jobban megfelelne ennek a témakörnek.
-
Ricqy
tag
dd-vel rátöltöttem a RootNexus nevű Debian alapú disztrót, és abban volt benne.
Egyébként az egyetlen ahogy hozzá tudok férni, az kártyaolvasón keresztül. (a gépen van a bootloader, a kártyán meg a rendszer) -
Karma
félisten
Rájöttem a forrásból

Ezt az egéremulátor kódot mivel juttattad rá egyébként? Egy kis kontextussal lehet hogy ki tudunk találni valami megoldást.
-
Ricqy
tag
A rendszerlogban nem látszik valami más hiba? Egy kiírás látszik az uinput forrásából.
De tényleg az lenne a jobb, ha egy strace-t is feltáncolnál a PDA-ra, és azzal futtatnád.
Az a baj, hogy nem tudok se módosítani a kódon (megfelelő gcc híján'), és csatlakozni se, mert csak egy csatlakozó van rajta, ami meg egyedi és nincs hozzá kábelem (egy Zipit Z2-es kütyü egyébként).
-
Karma
félisten
A rendszerlogban nem látszik valami más hiba? Egy kiírás látszik az uinput forrásából.
De tényleg az lenne a jobb, ha egy strace-t is feltáncolnál a PDA-ra, és azzal futtatnád.
-
Ricqy
tag
Azt megcsináltam volna, de ARMv5-ös gépen kéne futtatni, ahhoz meg nincs fordítóm.
Tehát azt kéne kitalálni mit hiányol (rootként futtatom). -
Jester01
veterán
-
Karma
félisten
Szerintem nyúlj bele egy kicsit, az elvesztés helyett tedd be egy változóba az ioctl visszatérési értékét, és irasd ki. Legalább kiderül, mi fájhat neki.
Az első saccom jogosultsághiány lenne.
-
Ricqy
tag
-
shinodas
tag
Köszönöm a válaszokat!

-
kispx
addikt
Én arra lennék kíváncsi, hogy pl van egy *p pointerem, és egy tomb[10] tömböm. Beállítom, hogy p=tomb, megkapja a kezdőcímét a tömbnek, a pointer, ha jól tudom. De nem tudom, hogy konkrétan, hogyan néz ki az a kifejezés, aminél a pointert a kezdő címére állítom vissza. Egy saját függvényben, ahol csak a pointert "látom", a tömbböt nem, ott nem tudom.
Mit javasolnál ehelyett az algoritmus helyett?

A függvénybe deklarálsz egy segéd változót, amelynek az értéke a másik tömb nulladik elemének a címe. Amikor az általad használt pointer a tömb végére ért, akkor ennek a poniternek értékül adod az előbb deklarált segéd változó értékét.
-
Jester01
veterán
Én arra lennék kíváncsi, hogy pl van egy *p pointerem, és egy tomb[10] tömböm. Beállítom, hogy p=tomb, megkapja a kezdőcímét a tömbnek, a pointer, ha jól tudom. De nem tudom, hogy konkrétan, hogyan néz ki az a kifejezés, aminél a pointert a kezdő címére állítom vissza. Egy saját függvényben, ahol csak a pointert "látom", a tömbböt nem, ott nem tudom.
Mit javasolnál ehelyett az algoritmus helyett?

Nyilván látod a tömböt ha a pointer megvan. MOD: persze a végét valahonnan tudni kell, vagy valami lezáróval vagy át kell adni a méretet.
Egy jobb algoritmus ha mindkét tömböt rendezed és aztán már lineárisan össze lehet nézni őket.
-
shinodas
tag
Én arra lennék kíváncsi, hogy pl van egy *p pointerem, és egy tomb[10] tömböm. Beállítom, hogy p=tomb, megkapja a kezdőcímét a tömbnek, a pointer, ha jól tudom. De nem tudom, hogy konkrétan, hogyan néz ki az a kifejezés, aminél a pointert a kezdő címére állítom vissza. Egy saját függvényben, ahol csak a pointert "látom", a tömbböt nem, ott nem tudom.
Mit javasolnál ehelyett az algoritmus helyett?

-
Jester01
veterán
Sziasztok!

Adott két tömb, amelyeket szeretnék összehasonlítani. Megszeretném számolni a két tömbben hány elem értéke egyezik meg. Ez megy is, örülök is neki, de szeretném pointerekkel ugyanezt. Ugye az elmélet az az, hogy veszi az egyik tömb 0. elemét, majd végig pörgeti a másik tömbbön, van e egyezés. Ha van, akkor növel egy számlálót, és az első tömb következő eleméhez lép. Persze ilyenkor a másik tömb 0. eleménél folytatná a következő körben. Na ez az ami nem megy, pointerekkel, hogyan mondom meg a pointernek, hogy "te most nullázad le magad!"?

Nem értem a kérdést. Egyszerűen visszaállítod az első elemre, mint induláskor.
(Egyébként persze ez egy elég rossz algoritmus de gondolom most ez nem érdekes.) -
shinodas
tag
Sziasztok!

Adott két tömb, amelyeket szeretnék összehasonlítani. Megszeretném számolni a két tömbben hány elem értéke egyezik meg. Ez megy is, örülök is neki, de szeretném pointerekkel ugyanezt. Ugye az elmélet az az, hogy veszi az egyik tömb 0. elemét, majd végig pörgeti a másik tömbbön, van e egyezés. Ha van, akkor növel egy számlálót, és az első tömb következő eleméhez lép. Persze ilyenkor a másik tömb 0. eleménél folytatná a következő körben. Na ez az ami nem megy, pointerekkel, hogyan mondom meg a pointernek, hogy "te most nullázad le magad!"?

-
raven12
senior tag
-
kingabo
őstag
#include <iostream>
int main()
{
unsigned short int number;
std::cout << "Adjon meg egy számot 1 és 5 között: ";
std::cin >> number;
std::cout << "\nKöszönöm, feldolgozás...";
switch (number)
{
case 0:
std::cout << "Ez túl kicsi te marha!";
brake;
case 1:
std::cout << "Jóvan!";
brake;
case 2:
for ( ; number < 5; number++)
{
std::cout << "Pörgök!";
}
brake;
case 3:
std::cout << "Ez 3!";
brake;
case 4:
std::cout << "Ez 4!";
brake;
case 5:
std::cout << "Ez az 5!";
brake;
default:
std::cout << "Ez túl nagy hapsikám!";
brake;
}
std::cout << "Na jóvan azé má kiírok valamit";
return 0;
}Azt kapom hibaüzenetként, hogy a brake-k nincsenek deklarálva. "not declared in this scope"
Ha kiveszem az össze brake-t, akkor lefut a program. Mi lehet a hiba? Könyv szerint így kell...break-nek írják

-
raven12
senior tag
#include <iostream>
int main()
{
unsigned short int number;
std::cout << "Adjon meg egy számot 1 és 5 között: ";
std::cin >> number;
std::cout << "\nKöszönöm, feldolgozás...";
switch (number)
{
case 0:
std::cout << "Ez túl kicsi te marha!";
brake;
case 1:
std::cout << "Jóvan!";
brake;
case 2:
for ( ; number < 5; number++)
{
std::cout << "Pörgök!";
}
brake;
case 3:
std::cout << "Ez 3!";
brake;
case 4:
std::cout << "Ez 4!";
brake;
case 5:
std::cout << "Ez az 5!";
brake;
default:
std::cout << "Ez túl nagy hapsikám!";
brake;
}
std::cout << "Na jóvan azé má kiírok valamit";
return 0;
}Azt kapom hibaüzenetként, hogy a brake-k nincsenek deklarálva. "not declared in this scope"
Ha kiveszem az össze brake-t, akkor lefut a program. Mi lehet a hiba? Könyv szerint így kell... -
WonderCSabo
félisten
-
Ricqy
tag
-
mobal
nagyúr
-
Ricqy
tag
-
kingabo
őstag
-
Jester01
veterán
Megkerüli a szokásos visszatérési mechanizmust, nem visszatérési érték hanem "mellékhatás". A pointerek bemenő paraméterek, amiken keresztül a függvényed közvetlenül módosítja a memóriát.
-
Korcsii
őstag
Röviden: semmi.
Bővebben: nincs visszatérési típusa.
Visszatérési értéke... az sincs... vagy mégis? Függvénypointerrel kombinálva, és a visszatérési értéket kasztolva nem lehet jó dolgokat művelni void visszatérési értékkel? Hmm, de rég volt már... -
shinodas
tag
Aham, akkor lehet csak a pointer értékét rosszul növeltem.

Szerk.:Ha nincs visszatérési érték, akkor, hogyan adja át a két pointert, amit szerettem volna, voidnál?
-
Jester01
veterán
Semmi nem történik, azt jelenti, hogy a függvényednek nincs visszatérési értéke.
Azt egyébként nem kellett átírni ahhoz, hogy működjön - teljesen ártalmatlan volt. -
shinodas
tag
A voidos és a (*pointer)++ kombináció megoldotta a probllémát! Nagyon szépen köszönöm!
Arról tudnátok néhány mondatot mondani, hogy, ha void van, akkor mi történik? -
shinodas
tag
A két return-nek nincs értelme.
A *magan_p++; pedig nem az értéket növeli, hanem a pointert. Helyesen (*magan_p)++; MOD: illetve a talán olvashatóbb *magan_p += 1; forma. Nyilván ugyanez vonatkozik a massal_p-re is.Érdemes a fordító figyelmeztető üzeneteit bekapcsolni és átgondolni. Jelen esetben például:
t.c: In function 'massal_magan':
t.c:86: warning: value computed is not used
t.c:89: warning: value computed is not used
t.c:96: warning: will never be executedJa egyébként nem minden mássalhangzó ami nem magánhangzó (például a szóköz, számok, írásjelek)
Jester01: Tudom, hogy nem minden mássalhangzó, itt most csak ez a pointeres dolog lett volna a lényeg.
Egyébként a hibaüzenetek alapján próbálok elindulni, csak annyira kezdő vagyok, hogy valamikor nem mond semmit nekem.
(*magan_p)++; ezt nem is tudtam pl, köszönöm
kingabo: A voidot kipróbálom, ezt sem gondoltam volna.
Egyébként szerintem ez a probléma, hogy csak úgy magamtól, netről próbálom tanulni, nincs egy könyvem, ami alapján haladhatnék. :SKöszönöm a válaszokat /tippeket! Este beszámolok, mire jutottam

-
bpx
őstag
Egyrészt az fv meghívásakor a visszatérési értéket semmilyen változónak nem adod értékül, másrészt a 2 return nem tud végrehajtódni, ugyanis már első után befejeződik a függvény. Jelen esetben a függvényednek void-nak kéne lennie, és nem kell a végére return.
Egyébként a problémádra itt #4 JackOfAllTrades hsz-e mutat egy pl-t, erre a megoldásra céloztam fentebb.
Korábban a pointerekről írtam ide egy hosszabb hsz-t, igaz a paraméter átadás nem volt része, keresővel sztem hamar megtalálod.
Egyébként könyvből tanulsz, netes cikkből, vagy megpróbálsz rájönni hogy mennek a dolgok? Az idők folyamán elég sok könyv, jegyzet, példatár lett itt linkelve érdemes őket megnézni.

szerk: és még lassú is vagyok.

az C++, ez meg C
szerk: (és nem, nem a cin/cout-ra gondolok
) -
kingabo
őstag
Ennek így nem kellene vissza adni az értéket rendesen?
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan_p, int *massal_p);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int maganhangzo=0;
int massalhangzo=0;
int *magan_p=0;
int *massal_p=0;
magan_p = &maganhangzo;
massal_p = &massalhangzo;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, magan_p, massal_p);
printf("Mássalhangzók száma: %d\n", *massal_p);
return 0;
}
//SAJÁT FÜGGVÉNYEK
int massal_magan(char result[], int *magan_p, int *massal_p)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan_p++;
break;
default:
*massal_p++;
break;
}
i++;
}
return *magan_p;
return *massal_p;
}Mert olyan, mintha nem adná vissza...
Esetleg tudtok mutatni egy leírást, hogy ne itt kérdezzek hülyeségeket?
Konkrétan erre a problémára nem találtam a google-ben választ, bár biztos van, csak rossz helyen keresemEgyrészt az fv meghívásakor a visszatérési értéket semmilyen változónak nem adod értékül, másrészt a 2 return nem tud végrehajtódni, ugyanis már első után befejeződik a függvény. Jelen esetben a függvényednek void-nak kéne lennie, és nem kell a végére return.
Egyébként a problémádra itt #4 JackOfAllTrades hsz-e mutat egy pl-t, erre a megoldásra céloztam fentebb.
Korábban a pointerekről írtam ide egy hosszabb hsz-t, igaz a paraméter átadás nem volt része, keresővel sztem hamar megtalálod.
Egyébként könyvből tanulsz, netes cikkből, vagy megpróbálsz rájönni hogy mennek a dolgok? Az idők folyamán elég sok könyv, jegyzet, példatár lett itt linkelve érdemes őket megnézni.

szerk: és még lassú is vagyok.

-
Jester01
veterán
Ennek így nem kellene vissza adni az értéket rendesen?
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan_p, int *massal_p);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int maganhangzo=0;
int massalhangzo=0;
int *magan_p=0;
int *massal_p=0;
magan_p = &maganhangzo;
massal_p = &massalhangzo;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, magan_p, massal_p);
printf("Mássalhangzók száma: %d\n", *massal_p);
return 0;
}
//SAJÁT FÜGGVÉNYEK
int massal_magan(char result[], int *magan_p, int *massal_p)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan_p++;
break;
default:
*massal_p++;
break;
}
i++;
}
return *magan_p;
return *massal_p;
}Mert olyan, mintha nem adná vissza...
Esetleg tudtok mutatni egy leírást, hogy ne itt kérdezzek hülyeségeket?
Konkrétan erre a problémára nem találtam a google-ben választ, bár biztos van, csak rossz helyen keresemA két return-nek nincs értelme.
A *magan_p++; pedig nem az értéket növeli, hanem a pointert. Helyesen (*magan_p)++; MOD: illetve a talán olvashatóbb *magan_p += 1; forma. Nyilván ugyanez vonatkozik a massal_p-re is.Érdemes a fordító figyelmeztető üzeneteit bekapcsolni és átgondolni. Jelen esetben például:
t.c: In function 'massal_magan':
t.c:86: warning: value computed is not used
t.c:89: warning: value computed is not used
t.c:96: warning: will never be executedJa egyébként nem minden mássalhangzó ami nem magánhangzó (például a szóköz, számok, írásjelek)
-
kispx
addikt
Ennek így nem kellene vissza adni az értéket rendesen?
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan_p, int *massal_p);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int maganhangzo=0;
int massalhangzo=0;
int *magan_p=0;
int *massal_p=0;
magan_p = &maganhangzo;
massal_p = &massalhangzo;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, magan_p, massal_p);
printf("Mássalhangzók száma: %d\n", *massal_p);
return 0;
}
//SAJÁT FÜGGVÉNYEK
int massal_magan(char result[], int *magan_p, int *massal_p)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan_p++;
break;
default:
*massal_p++;
break;
}
i++;
}
return *magan_p;
return *massal_p;
}Mert olyan, mintha nem adná vissza...
Esetleg tudtok mutatni egy leírást, hogy ne itt kérdezzek hülyeségeket?
Konkrétan erre a problémára nem találtam a google-ben választ, bár biztos van, csak rossz helyen keresemCsak az első return fog lefutni, a második nem. A függvényed visszatérési értékét elkéne tárolni egy változóban,
-
shinodas
tag
Ennek így nem kellene vissza adni az értéket rendesen?
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan_p, int *massal_p);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int maganhangzo=0;
int massalhangzo=0;
int *magan_p=0;
int *massal_p=0;
magan_p = &maganhangzo;
massal_p = &massalhangzo;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, magan_p, massal_p);
printf("Mássalhangzók száma: %d\n", *massal_p);
return 0;
}
//SAJÁT FÜGGVÉNYEK
int massal_magan(char result[], int *magan_p, int *massal_p)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan_p++;
break;
default:
*massal_p++;
break;
}
i++;
}
return *magan_p;
return *massal_p;
}Mert olyan, mintha nem adná vissza...
Esetleg tudtok mutatni egy leírást, hogy ne itt kérdezzek hülyeségeket?
Konkrétan erre a problémára nem találtam a google-ben választ, bár biztos van, csak rossz helyen keresem -
shinodas
tag
A magan és a massal az miért 1-1 pointer? De ha már pointer, akkor miért nem egy létező memória területre mutatnak: másik változó, vagy általad lefoglalt memória terület?
Régen c-ztem már, de sztem a pointer helyett, mintha egy referenciát kéne átadni és akkor nem kell szenvedned a pointerezéssel. Amit -nem sértésként- de nem igazán értesz...Köszönöm srácok! Próbálkozok tovább!

Azért erőltetem a pointereket, mert a suliban is ezt nyomatják, jó lenne rájönni a varázslatra
-
kingabo
őstag
Sziasztok! Kellemes pénteket mindenkinek!

Remélem nem probléma, hogy rengeteg kérdésem van, szóval itt egy újabb.
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan, int *massal);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int *magan=0;
int *massal=0;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, *magan, massal);
return 0;
}
//SAJÁT FÜGGVÉNY
int massal_magan(char result[], int *magan, int *massal)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan++;
break;
default:
*massal++;
break;
}
i++;
}
return *magan, *massal;
}A gondom az értékátadással van, hogy megakarom számoltatni, a magán és mással hangzókat, ezeknek az értékét pedig pointerekkel visszaadni. Hogyan kellene ezt helyesen? A másik kérdésem pedig, hogy Mikor számolom a magánhangzókat, az ékezetes karakterekre hibát dob, mármint, pl case 'é'-re, gondolom valami kódolási gubanc, ezt hogyan lehetne kiküszöbölni?

Btw, itt főleg a 3. sorral van gondja a fordítónak, a függvénydeklarációnálA magan és a massal az miért 1-1 pointer? De ha már pointer, akkor miért nem egy létező memória területre mutatnak: másik változó, vagy általad lefoglalt memória terület?
Régen c-ztem már, de sztem a pointer helyett, mintha egy referenciát kéne átadni és akkor nem kell szenvedned a pointerezéssel. Amit -nem sértésként- de nem igazán értesz... -
kispx
addikt
Sziasztok! Kellemes pénteket mindenkinek!

Remélem nem probléma, hogy rengeteg kérdésem van, szóval itt egy újabb.
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan, int *massal);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int *magan=0;
int *massal=0;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, *magan, massal);
return 0;
}
//SAJÁT FÜGGVÉNY
int massal_magan(char result[], int *magan, int *massal)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan++;
break;
default:
*massal++;
break;
}
i++;
}
return *magan, *massal;
}A gondom az értékátadással van, hogy megakarom számoltatni, a magán és mással hangzókat, ezeknek az értékét pedig pointerekkel visszaadni. Hogyan kellene ezt helyesen? A másik kérdésem pedig, hogy Mikor számolom a magánhangzókat, az ékezetes karakterekre hibát dob, mármint, pl case 'é'-re, gondolom valami kódolási gubanc, ezt hogyan lehetne kiküszöbölni?

Btw, itt főleg a 3. sorral van gondja a fordítónak, a függvénydeklarációnálA függvényed így néz ki:
int massal_magan (char result[], int *magan, int *massal)
Tehát második paraméterként egy int-re mutató pointert vár.A függvényhívásod így néz ki:
int *magan=0;
//...
massal_magan(result, *magan, massal);A második paraméternél a mutatott objektumot adtad át és nem a rá hivatkozó pointert.
Röviden nem kell az índirekció művelete. ( * )Szerk.: de érdekes, hogy a 3. paraméternél jól használtad a mutatót.
-
shinodas
tag
Sziasztok! Kellemes pénteket mindenkinek!

Remélem nem probléma, hogy rengeteg kérdésem van, szóval itt egy újabb.
#include <stdio.h>
#include <stdlib.h>
int massal_magan (char result[], int *magan, int *massal);
int main()
{
char string1[10];
char string2[10];
char result[20];
int i=0;
int r=0;
int *magan=0;
int *massal=0;
printf("Kérem adjon meg egy szót!\n");
scanf("%s", string1);
printf("Kérem adjon meg egy újabb szót!\n");
scanf("%s", string2);
//kis és nagybetűs átalakítás
for(i=0;string1[i]!='\0';i++)
{
if(string1[i]>=65 && string1[i]<=90)
{
string1[i]=string1[i]+32;
}
}
string1[0]=string1[0]-32;
for(i=0;string2[i]!='\0';i++)
{
if(string2[i]>=65 && string2[i]<=90)
{
string2[i]=string2[i]+32;
}
}
string2[0]=string2[0]-32;
i=0;
//összefűzés
while(string1[i]!='\0')
{
result[r]=string1[i];
r++;
i++;
}
result[r++]=' ';
i=0;
while(string2[i]!='\0')
{
result[r++]=string2[i];
i++;
}
result[r]='\0';
printf("Az összefűzött string: %s\n", result);
massal_magan(result, *magan, massal);
return 0;
}
//SAJÁT FÜGGVÉNY
int massal_magan(char result[], int *magan, int *massal)
{
int i=0;
while(result[i]!='\0')
{
switch(result[i])
{
case 'a':
case 'e':
case 'o':
case 'i':
case 'u':
case 'A':
case 'E':
case 'O':
case 'I':
case 'U':
*magan++;
break;
default:
*massal++;
break;
}
i++;
}
return *magan, *massal;
}A gondom az értékátadással van, hogy megakarom számoltatni, a magán és mással hangzókat, ezeknek az értékét pedig pointerekkel visszaadni. Hogyan kellene ezt helyesen? A másik kérdésem pedig, hogy Mikor számolom a magánhangzókat, az ékezetes karakterekre hibát dob, mármint, pl case 'é'-re, gondolom valami kódolási gubanc, ezt hogyan lehetne kiküszöbölni?

Btw, itt főleg a 3. sorral van gondja a fordítónak, a függvénydeklarációnál -
shinodas
tag
A structokat nem igazán tudom még használni, a pointereset kipróbálom, köszönöm!

-
Korcsii
őstag
Egy olyan kérdésem lenne, hogy, ha írok egy sajátfüggvényt, és az két értéket adna vissza, mikor meghívom a függvényemet, azt meghívásnál, hogy néz ki? Tehát pl return x,y; és ezt meghívásnál, hogy jelölöm, ha adott résznél nekem csak az x változó kéne ott? Remélem nem túl zavarosan fogalmazok, ha mégis, akkor bocsi
Sehogy. (hmm, a legújabb C-ben vagy C++-ban nincs erre valami hákolás?)
Hozz létre egy struct-ot, és azt add vissza. Vagy adj a függvények pointer-eket is paraméterként, amiben eltárolja a végeredményeket.void fv(int a, int b, int *x, int *y) {
*x = a;
*y = b;
} -
shinodas
tag
Egy olyan kérdésem lenne, hogy, ha írok egy sajátfüggvényt, és az két értéket adna vissza, mikor meghívom a függvényemet, azt meghívásnál, hogy néz ki? Tehát pl return x,y; és ezt meghívásnál, hogy jelölöm, ha adott résznél nekem csak az x változó kéne ott? Remélem nem túl zavarosan fogalmazok, ha mégis, akkor bocsi
-
shinodas
tag
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string1[10];
char string2[10];
char result[20];
int r=0, n=0;
printf("Kérek egy szót!\n");
scanf("%s",string1);
printf("Kérek egy szót!\n");
scanf("%s",string2);
for(n=0;string1[n]!='\0';n++)
{
result[r]=string1[n];
r++;
}
result[r++]=' ';
for(n=0;string2[n]!='\0';n++)
{
result[r]=string2[n];
r++;
}
result[r]='\0';
printf("%s", result);
return 0;
}Működik, én voltam a balf@sz
Köszi mindenkinek! -
shinodas
tag
-
Korcsii
őstag
-
kispx
addikt
Jól oldottad meg, csak a for ciklust lezáró kapcsos zárójel után r++ nem kell, mert a kapcsos zárójel előtt már egyszer megnövelted.
-
shinodas
tag
Igen, ezt meg el is felejtettem srácok, hogy ti hogyan oldanátok meg? Növelem az r-t, beszúrom a result[r]-be a spacet, majd újra növelem az r-t és jöhet a második string? Btw ebből meg kitöröltem azt a sor

-
kispx
addikt
Sziasztok!
Írtam gyakorlásnak egy ilyen kis egyszerű dolgot, amit el akartam érni: kérjen be két szót, tárolja 2 stringbe, majd egy harmadikba fűzze össze a kettőt. A problémám, hogy a két szó közé akarnék egy spacet beerőltetni, de nem akar működni úgy. Mit nézek el?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string1[10];
char string2[10];
char result[20];
int r=0, n=0;
printf("Kérek egy szót!\n");
scanf("%s",string1);
printf("Kérek egy szót!\n");
scanf("%s",string2);
for(n=0;string1[n]!='\0';n++)
{
result[r]=string1[n];
r++;
}
for(n=0;string2[n]!='\0';n++)
{
result[r]=string2[n];
r++;
}
r++;
result[r]='\0';
printf("%s", result);
return 0;
}A két for ciklus között nem látok olyan kódot, ami hozzáadja a szóközt.
Szerk.:
És mintha az utolsó for ciklus után lenne egy felesleges r++; -
Sk8erPeter
nagyúr
Sziasztok!
Írtam gyakorlásnak egy ilyen kis egyszerű dolgot, amit el akartam érni: kérjen be két szót, tárolja 2 stringbe, majd egy harmadikba fűzze össze a kettőt. A problémám, hogy a két szó közé akarnék egy spacet beerőltetni, de nem akar működni úgy. Mit nézek el?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string1[10];
char string2[10];
char result[20];
int r=0, n=0;
printf("Kérek egy szót!\n");
scanf("%s",string1);
printf("Kérek egy szót!\n");
scanf("%s",string2);
for(n=0;string1[n]!='\0';n++)
{
result[r]=string1[n];
r++;
}
for(n=0;string2[n]!='\0';n++)
{
result[r]=string2[n];
r++;
}
r++;
result[r]='\0';
printf("%s", result);
return 0;
}"A problémám, hogy a két szó közé akarnék egy spacet beerőltetni, de nem akar működni úgy."
Lehet, hogy kiveri a szemem, de én akkor sem látom, hol erőlteted bele a space-t a kódodban?
-
Korcsii
őstag
Sziasztok!
Írtam gyakorlásnak egy ilyen kis egyszerű dolgot, amit el akartam érni: kérjen be két szót, tárolja 2 stringbe, majd egy harmadikba fűzze össze a kettőt. A problémám, hogy a két szó közé akarnék egy spacet beerőltetni, de nem akar működni úgy. Mit nézek el?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string1[10];
char string2[10];
char result[20];
int r=0, n=0;
printf("Kérek egy szót!\n");
scanf("%s",string1);
printf("Kérek egy szót!\n");
scanf("%s",string2);
for(n=0;string1[n]!='\0';n++)
{
result[r]=string1[n];
r++;
}
for(n=0;string2[n]!='\0';n++)
{
result[r]=string2[n];
r++;
}
r++;
result[r]='\0';
printf("%s", result);
return 0;
}Pl hogy a space-t nem adod hozzá sehol?
-
shinodas
tag
Sziasztok!
Írtam gyakorlásnak egy ilyen kis egyszerű dolgot, amit el akartam érni: kérjen be két szót, tárolja 2 stringbe, majd egy harmadikba fűzze össze a kettőt. A problémám, hogy a két szó közé akarnék egy spacet beerőltetni, de nem akar működni úgy. Mit nézek el?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string1[10];
char string2[10];
char result[20];
int r=0, n=0;
printf("Kérek egy szót!\n");
scanf("%s",string1);
printf("Kérek egy szót!\n");
scanf("%s",string2);
for(n=0;string1[n]!='\0';n++)
{
result[r]=string1[n];
r++;
}
for(n=0;string2[n]!='\0';n++)
{
result[r]=string2[n];
r++;
}
r++;
result[r]='\0';
printf("%s", result);
return 0;
} -
bpx
őstag
Új hozzászólás Aktív témák
-
3400 - 3301
6397 - 6001 6000 - 5901 5900 - 5801 5800 - 5701 5700 - 5601 5600 - 5501 5500 - 5401 5400 - 5301 5300 - 5201 5200 - 5101 5100 - 5001 5000 - 4901 4900 - 4801 4800 - 4701 4700 - 4601 4600 - 4501 4500 - 4401 4400 - 4301 4300 - 4201 4200 - 4101 4100 - 4001 4000 - 3901 3900 - 3801 3800 - 3701 3700 - 3601 3600 - 3501 3500 - 3401 3400 - 3301 3300 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Telekom mobilszolgáltatások
- Xbox tulajok OFF topicja
- GoodSpeed: ASUS RT-BE92U WiFi 7 router a felsőházból
- Gaming notebook topik
- Futás, futópályák
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- One mobilszolgáltatások
- EAFC 26
- Elektromos autók - motorok
- Battlefield 6
- További aktív témák...
- HIBÁTLAN iPhone 14 Pro 128GB Space Black -2 ÉV GARANCIA - Kártyafüggetlen, MS5386
- szinteÚJ Lenovo ThinkPad L14 Gen5 i7 155U 16GB 1TB FHD+
- LG UltraGear 27GS75Q-B Monitor! 2560x1440 / 200Hz / 1ms / G-Sync / G-Sync / FreeSync
- Bomba ár! HP EliteBook 845 G9 - Ryzen 5 6650U I 16GB I 512SSD I 14,1" FHD+ I Cam I W11 I Gari!
- iPhone SE 2020 64GB Black - 2 ÉV GARANCIA - Kártyafüggetlen, MS4902, 100% AKKSI
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



peration not permitted





ez azt hiszem akkor PHP -ban helyt állna! (abban gondolkoztam, sorry!)





