Hirdetés
- eBay-es kütyük kis pénzért
- "A homoszexualitás természetellenes" 😠
- Asszociációs játék. :)
- Fűzzük össze a szavakat :)
- Ingyen kellene, de tegnapra
- Nagy "hülyétkapokazapróktól" topik
- PLEX: multimédia az egész lakásban
- A fénynél gyorsabban
- Építkezünk 6. rész (2024)
- A gyerekem "tartalmat gyárt". Mit tegyek?
Új hozzászólás Aktív témák
-
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.
“All nothings are not equal.”
-
Jester01
veterán
-
Ricqy
tag
Dealloc makes the ARC-angels cry.
-
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á.
“All nothings are not equal.”
-
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");Jester
-
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.
“All nothings are not equal.”
-
Retekegér
HARDVERAPRÓD
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?
<< Heimdal >>
-
Retekegér
HARDVERAPRÓD
válasz Korcsii #3366 üzenetére
Igen, ^Z lesz a konzolon. Ütök utána Entert is, de harmadjára műkszik kb. Illusztráció.
<< Heimdal >>
-
Retekegér
HARDVERAPRÓD
válasz Korcsii #3368 üzenetére
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;
}<< Heimdal >>
-
Jester01
veterán
válasz Retekegér #3369 üzenetére
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;
}[ Szerkesztve ]
Jester
-
Retekegér
HARDVERAPRÓD
válasz Jester01 #3370 üzenetére
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.
[ Szerkesztve ]
<< Heimdal >>
-
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
[ Szerkesztve ]
Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.
-
Karma
félisten
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.
[ Szerkesztve ]
“All nothings are not equal.”
-
kispx
addikt
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.
[ Szerkesztve ]
-
rt06
veterán
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
Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.
-
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.
Ez egy .50-es rombolópuska, elég szép visszarúgással.
-
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 )
[ Szerkesztve ]
-
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[ Szerkesztve ]
Jester
-
pvt.peter
ő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
Ez egy .50-es rombolópuska, elég szép visszarúgással.
-
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. -
Karma
félisten
válasz shinodas #3389 üzenetére
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.
[ Szerkesztve ]
“All nothings are not equal.”
-
shinodas
tag
warning:gdb:failed to set controlling terminalperation not permitted
erre a hibaüzenetre valaki tud valamit? nem enged debuggolni normálisan :S -
kispx
addikt
-
Karma
félisten
válasz shinodas #3397 üzenetére
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?
[ Szerkesztve ]
“All nothings are not equal.”
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Mibe tegyem a megtakarításaimat?
- AMD vs. INTEL vs. NVIDIA
- Hivatalosan is elkészült az NVIDIA App
- Azonnali alaplapos kérdések órája
- Elemlámpa, zseblámpa
- Diablo IV
- Telekom mobilszolgáltatások
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- eBay-es kütyük kis pénzért
- Microsoft Excel topic
- További aktív témák...
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest