- Huawei Watch Fit 5 Pro - jó forma
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- Fotók, videók mobillal
- Yettel topik
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Xiaomi 14 - párátlanul jó lehetne
- iPhone topik
- Milyen okostelefont vegyek?
- Szaporodik és sokasodik a One UI 8.5
-
1200 - 1101
6397 - 6001 6000 - 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 - 1901 1900 - 1801 1800 - 1701 1700 - 1601 1600 - 1501 1500 - 1401 1400 - 1301 1300 - 1201 1200 - 1101 1100 - 1001 1000 - 901 900 - 801 800 - 701 700 - 601 600 - 501 500 - 401 400 - 301 300 - 201 200 - 101 100 - 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 Tabletek, E-bookok Nyomtatók, szkennerek 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
-
Csuty12
csendes tag
Sziasztok,
két hete kezdtem tanulni programozni c++ 3.1ben, az érdekelni hogy megoldható az hogy Vista-n normálisan fusson? A problémám az lenne hogy nem tudom teljes képernyőre kirakni, a másik pedig az hogy angol billentyűkiosztást használ a program bent, lehet valahogy ezt magyarrá varázsolni? Így kicsit macerás a () és egyebek..
u.i.: azért ezt a programot használom mert ahol oktatják ott is ez van és így egyszerűbb..
Köszönöm
-
skoda12
aktív tag
-
Gyuri16
senior tag
vegyel egy tombot: 0,1,2,3,4,5,6. ha ebbol ki akarod dobni a harmadikat, akkor ez marad: 0,1,2,4,5,6. mi tortent: a harmas helyere kerult a negyes, annak a helyere az otos es igy tovabb, majd az egesz tomb hossza egyel kisebb lett.
-
gaben
aktív tag
Hello!
Azt hogy tudom megoldani,hogy egy sima vektroból mondjuk törlöm a 3. elemet ill. egy mátrixnak mondjuk a középső sorát ? -
cellpeti
nagyúr
Sziasztok!
A Dev C++ról lemondtam.
Feltettem a C-Free-t,ezzel megírom a progit,majd mikor F5-vel lefuttatom egy ilyen kicsi ablakba fut le. Egész idáig jó volt,már régebben is írtam benne progit,akkor ok volt. Esetleg aki ilyet használ,az segíthetne nekem.
-
cellpeti
nagyúr
A Dev C++ tud olyat,hogy nem ugrik el a program végén,mint a C-Free?

-
-=Lord Tom=-
senior tag
-
sghc_toma
senior tag
-
Jester01
veterán
-
sghc_toma
senior tag
rosszul emlekeztem, a getc tenyleg int-et ad vissza, es valoban elofordulhat olyan implementacio, ahol az ellenorzes nem lesz jo.. bar en meg nem lattam olyat, hogy az EOF ne -1 lett volna..
-
Jester01
veterán
az elozo beolvasas utan ottmarad az stdin-en egy '\n', es ezt olvassa be a masodik scanf.. csinalhatod azt, hogy olvasas elott kiurited az stdin-t mondjuk igy:
char c; while ((c = getc(stdin)) != EOF && c != '\n');
ja, es az osszehasonlitasnal ne "-t hasznalj, hanem '-t.. a "+" igazabol ket karakter, a vegen van egy '\0'..
Rossz példa! Itt a c-nek int típusúnak kell lennie, különben az EOF ellenőrzés nem lesz jó.
Egyébként bevett tanács, hogy billentyűzetről nem olvasunk scanf-el. Helyette fgets + sscanf páros javallott.
-
sghc_toma
senior tag
Segítsetek plz, miért ugorja át a műveletjel megadását/miért nem lesz a muvjelnek megfelelő értéke?
#include <stdio.h>
int main(){
int szam, szam2;
char muvjel;
// Adatok beolvasása
printf("Kerem az elso szamot: ");
scanf("%d", &szam);
printf("\n\nMuvelet: ");
scanf("%c", &muvjel);
printf("\n\nKerem a masodik szamot: ");
scanf("%d", &szam2);
//Tényleges műveletvégrehajtás
if (muvjel=="+"){
printf("%d %c %d = %d ", szam, muvjel, szam2, (szam+szam2));
}
else if (muvjel=="-"){
printf("%d %c %d = %d ", szam, muvjel, szam2, (szam-szam2));
}
else if (muvjel=="*"){
printf("%d %c %d = %d ", szam, muvjel, szam2, (szam*szam2));
}
else if (muvjel=="/"){
printf("%d %c %d = %d ", szam, muvjel, szam2, (szam/szam2));
}
system("pause");
}az elozo beolvasas utan ottmarad az stdin-en egy '\n', es ezt olvassa be a masodik scanf.. csinalhatod azt, hogy olvasas elott kiurited az stdin-t mondjuk igy:
char c; while ((c = getc(stdin)) != EOF && c != '\n');
ja, es az osszehasonlitasnal ne "-t hasznalj, hanem '-t.. a "+" igazabol ket karakter, a vegen van egy '\0'..
-
cellpeti
nagyúr
De, csak át kell állítani a: tools - configure shortcuts-nál a ctrl+. ill törölni azt. (a magyar kiosztással akad)
köcce

-
-=Lord Tom=-
senior tag
-
cellpeti
nagyúr
-
-=Lord Tom=-
senior tag
Segítsetek plz, miért ugorja át a műveletjel megadását/miért nem lesz a muvjelnek megfelelő értéke?
#include <stdio.h>
int main(){
int szam, szam2;
char muvjel;
// Adatok beolvasása
printf("Kerem az elso szamot: ");
scanf("%d", &szam);
printf("\n\nMuvelet: ");
scanf("%c", &muvjel);
printf("\n\nKerem a masodik szamot: ");
scanf("%d", &szam2);
//Tényleges műveletvégrehajtás
if (muvjel=="+"){
printf("%d %c %d = %d ", szam, muvjel, szam2, (szam+szam2));
}
else if (muvjel=="-"){
printf("%d %c %d = %d ", szam, muvjel, szam2, (szam-szam2));
}
else if (muvjel=="*"){
printf("%d %c %d = %d ", szam, muvjel, szam2, (szam*szam2));
}
else if (muvjel=="/"){
printf("%d %c %d = %d ", szam, muvjel, szam2, (szam/szam2));
}
system("pause");
} -
skoda12
aktív tag
Nyilván egy hibaüzenetet látnunk kellene. De tippre azt mondom, hogy nem tetted projectbe, mert ha abba tetted volna, akkor nem kellett volna .c kiterjesztést megadni a fájlnak, hiszen eleve .c fájlt készít a C projectbe.
-
cellpeti
nagyúr
üdv! Írtam egy progit a Code:
locks-ba,de nem engedi futtatni(F8).
Ez miért lehet?A fájlnak .c kiterjesztést adtam.
Tudnátok segíteni?
-
kampi_
csendes tag
Sziasztok!
Tudna valaki segíteni nekem a CreateProcessWithLogonW függvénnyel kapcsolatban?
A problémám az vele, hogy létre tudok hozni egy processt pl Total commandert, de:
- bennt a cégnél műkődik is, mert egy admin usert adok meg, és hozzáférek olyan dolgokhoz amikhez csak ezzel a userral tudok. Ezzel eddig semmi gáz. Ha megnézem Task Managerben, akkor ott viszont nem úgy látszik, hogy az admin userrel futtatom a process-t hanem a SYSTEM futtatja a process-t. Na mindegy, végülis műkődik, csak gondoltam megkérdem ezt is hátha valaki tudja hogy miért?
- otthon viszont(hazaviszem a laptopom) megpróbálom ugyanezt (semmit nem változtattam a kódon) és meg akarom nyitni az admin userrel ugyanúgy a Total commandert (már be voltam jelentkezve a gépre vele, így létrejöt a profil, tehát elvileg már akármit tudok run as-ként futtatni), és meg is nyílik, viszont itt már nincsenek meg a jogaim. Most nem hálózati jogokra gondolok, hanem pl az a user amivel be vagyok lépve, nem admin, tehát pl nem tudok egy fájlt létrehozni a c:\-ben. Az admin userrel viszont simán tudok. Van egy lokális admin user is, azzal is megpróbáltam. Megadtam a usert, jelszót, domainnak meg a gépnevet, és ugyanúgy nincs jogom hozzá. Mindkét esetben (otthon az admin és a lokál admin esetében is) task managerben úgy látszik hogy a processt az a user futtaja aki be van jelentkezve.Erre van valakinek valami ötlete?
Előre is köszi a segítséget!
Kampi
-
cellpeti
nagyúr
-
sghc_toma
senior tag
-
skoda12
aktív tag
-
cellpeti
nagyúr
-
sghc_toma
senior tag
nem szukseges beallitani, ha .c a kiterjesztes, automatikusan C-kent fordit..
amugy a project Properties|C/C++|Advanced|Compile As helyen lehet beallitani az egesz project-re (ezt felulirja a kiterjesztes).. adott file-ra is be lehet allitani, ekkor ertelemszeruen a file Properties lapjan kell beallitani, nem a project-en.. -
skoda12
aktív tag
Szia!
Nekem mindenképp akkor a Visual Studio kellene,de csak C++ engedélyez. Inkább ebbe a progiba vizsgáznék,mint a Turbo C 2.0-n. Ez a progi kell a féléves vizsgához progból. Most leszedtem megint,de még mindig csak C++ enged írni. Nem tudod,hogy hol kell átállítani?
Először mindig új projectet hozz létre és azon belül fájlokat. Valahol a new project menupont alatt kell beállítani, hogy C-ben fogod írni.
-
cellpeti
nagyúr
Szia!
Nekem mindenképp akkor a Visual Studio kellene,de csak C++ engedélyez. Inkább ebbe a progiba vizsgáznék,mint a Turbo C 2.0-n. Ez a progi kell a féléves vizsgához progból. Most leszedtem megint,de még mindig csak C++ enged írni. Nem tudod,hogy hol kell átállítani?
-
skoda12
aktív tag
CodeBlocks, Dev-C++, Visual C++ Express (azt hiszem be kell neki állítani valahol, hogy unmanaged C kódot akarsz írni). Az első kettő elég minimális IDE, de kezdetben elég lesz.
-
cellpeti
nagyúr
Nem akarok hülyeséget kérdezni,de mibe lehet C.be programozni, kompatibilisnek kell lennie a Turbo C 2.0-val???
Visual C vagy Visual Studio 2008 vagy melyik?
-
kampi_
csendes tag
Hi!
Boccs, hogy ennyit írok. Szóval mostmár sikerült megcsinálni. A LOGON_WITH_PROFILE-t kellett átírni LOGON_NETCREDENTIALS_ONLY-ra. Most viszont az a bajom, hogy a process elindul, de a másik user neve alatt, hanem vagy az enyém alatt, vagy pedig system-ként látja a taskmanager. Ez mitől lehet? Ebben segítsetek légyszíves, mert fontos lenne.
Köszönöm!
kampi
-
kampi_
csendes tag
Hi!
A GetLastError 1326-ot ad vissza, vagyis Logon Failure-el szállt el. Közben rájöttem, hogy az volt a gáz, hogy nem Unicoe típust hazsnáltam, hanem csak sima char-t nem wchar_t -t. De ezt már kijavítottam. Most az a bajom, hogy ha lokális felhasználóval akarok egy process-t nyitni, akkor műkődik, viszont ha egy olyan userral ami domain-tag akkor márnem megy. GetLastError szintén 1326-ot ad vissza.
Valakinek valami ötlet?
Előre is köszi!
kampi
-
Jester01
veterán
Hi!
Tudja valaki hogy hogyan kell használni a CreateProcessWithLogonW fv-t? Vagy csak én vagyok béna, és azért nem jó?
Így próbálom,de nem történik semmi, a CreateProcessWithLogonW mindig 0-t ad vissza,vagyis valamilyen hiba van,csak nem találom meg hogy mi?

STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
int bFuncRetn = CreateProcessWithLogonW(
(LPCWSTR)user,
(LPCWSTR)domain,
(LPCWSTR)password,
LOGON_WITH_PROFILE,//LOGON_NETCREDENTIALS_ONLY,
(LPWSTR)applicationname,
NULL,
CREATE_UNICODE_ENVIRONMENT,//CREATE_NEW_PROCESS_GROUP,
NULL,
NULL,
(LPSTARTUPINFOW)&StartInfo,
&ProcInfo
);CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
printf("\n\nCreateProcessWithLogonW returns :: %d", bFuncRetn);Előre is köszönöm a segítséget!
kampi
1) megnézted, hogy a GetLastError mit mond?
2) van joga a felhasználónak a desktophoz? ("The application must add permission for the specified user account to the specified window station and desktop, even for WinSta0\Default.")
3) esetleg nem unicode stringeket adsz be neki? -
kampi_
csendes tag
Hi!
Tudja valaki hogy hogyan kell használni a CreateProcessWithLogonW fv-t? Vagy csak én vagyok béna, és azért nem jó?
Így próbálom,de nem történik semmi, a CreateProcessWithLogonW mindig 0-t ad vissza,vagyis valamilyen hiba van,csak nem találom meg hogy mi?

STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
int bFuncRetn = CreateProcessWithLogonW(
(LPCWSTR)user,
(LPCWSTR)domain,
(LPCWSTR)password,
LOGON_WITH_PROFILE,//LOGON_NETCREDENTIALS_ONLY,
(LPWSTR)applicationname,
NULL,
CREATE_UNICODE_ENVIRONMENT,//CREATE_NEW_PROCESS_GROUP,
NULL,
NULL,
(LPSTARTUPINFOW)&StartInfo,
&ProcInfo
);CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
printf("\n\nCreateProcessWithLogonW returns :: %d", bFuncRetn);Előre is köszönöm a segítséget!
kampi
-
kampi_
csendes tag
Sziasztok!
Tudja valaki, hogy hogyan lehet megoldani C-ben azt, hogy létrehozok egy process-t, de úgy mintha run as-szel futttatnám? Tehát bekérem a felhasználónevet, meg a jelszót, meg hogy milyen process process-t nyissak meg, és az eredmény az hogy megnyílik a program csak úgy mintha az adott felhasználó nevében nyitnám meg.
Thx, kampi
Hi!
Azt hiszem megtaláltam. Ha minden igaz akkor a CreateProcessWithLogonW függvénnyel tudok ilyet csinálni. Ha nem, akkor légyszíves szóljatok, mert hiába fogok próbálkozni

Thx, kampi
-
kampi_
csendes tag
Sziasztok!
Tudja valaki, hogy hogyan lehet megoldani C-ben azt, hogy létrehozok egy process-t, de úgy mintha run as-szel futttatnám? Tehát bekérem a felhasználónevet, meg a jelszót, meg hogy milyen process process-t nyissak meg, és az eredmény az hogy megnyílik a program csak úgy mintha az adott felhasználó nevében nyitnám meg.
Thx, kampi
-
Jester01
veterán
Na pl:
typedef struct szam{
int a;
int b;
} SZAM;
void szum(int a,int b)
{
printf("%d\n",a+b);
}
int main()
{
SZAM* sz;
sz=(SZAM*)malloc(sizeof(SZAM));
sz->a=4;
sz->b=5;
szum(sz->a,sz->b);
free(sz);
sz=NULL;
return 0;
}sz: 4 byte
*sz: 8byte
2 int másolat: 8byteTehát ennek összesen akkor min 20byte memória kell a program egy adott pontján.
Valami ilyesmire gondoltam.A valgrindban van egy "massif" eszköz is, az nem jó?
#-----------
snapshot=64
#-----------
time=124348
mem_heap_B=8
mem_heap_extra_B=8
mem_stacks_B=1008
heap_tree=detailed
n1: 8 (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
n0: 8 in 1 place, below massif's threshold (01.00%) -
skylaner
senior tag
Hát a globális (illetve statikus) változók azok benne vannak a program fejlécében (objdump -h kimenetben data+bss). Lokális változók méreténél (ideértve a függvényargumentumokat is) nem tudom mit szeretnél tudni, esetleg a maximális verem méretet? Mivel ismereteim szerint linux alatt a verem nem csökken, ezért azt elvileg ki lehet nyomozni a futás végén. Például gdb-vel breakpoint az exit függvényre és a /proc/<pid>/maps fájlban a stack bejegyzésből.
Na pl:
typedef struct szam{
int a;
int b;
} SZAM;
void szum(int a,int b)
{
printf("%d\n",a+b);
}
int main()
{
SZAM* sz;
sz=(SZAM*)malloc(sizeof(SZAM));
sz->a=4;
sz->b=5;
szum(sz->a,sz->b);
free(sz);
sz=NULL;
return 0;
}sz: 4 byte
*sz: 8byte
2 int másolat: 8byteTehát ennek összesen akkor min 20byte memória kell a program egy adott pontján.
Valami ilyesmire gondoltam. -
Jester01
veterán
Kösz, eszembe se jutott ez az n-ig összehasonlító fgv.
Visszatérve egy korábbi kérdésemre: valgrind
Feltettem ubuntut,valgrind-et. Futtattam --leak-check=full --showreachable=yes paraméterekkel, sok okosságot kiírt, de hogy tudnám azt megnézni h összesen mennyi memóriát használt a progi, ne csak azt amit malloc-al foglaltam le? Mindent, lokális,globális,fgv argumentumok változói stb...
Vagy nincs ilyen lehetőség?Hát a globális (illetve statikus) változók azok benne vannak a program fejlécében (objdump -h kimenetben data+bss). Lokális változók méreténél (ideértve a függvényargumentumokat is) nem tudom mit szeretnél tudni, esetleg a maximális verem méretet? Mivel ismereteim szerint linux alatt a verem nem csökken, ezért azt elvileg ki lehet nyomozni a futás végén. Például gdb-vel breakpoint az exit függvényre és a /proc/<pid>/maps fájlban a stack bejegyzésből.
-
skylaner
senior tag
Igen, a lezáró nulla csak akkor megy át, ha 14 byteot küldesz. Jelen esetben amúgy nem is kell lezárni: if (len == 13 && strncmp(msg, "download_over", 13) == 0) ....
Ja és a recv visszaadhat hibakódot (-1) vagy éppenséggel BUFF_SIZE értéket is és ezekben az esetekben a msg[len]='\0'; felettéb szerencsétlen lenne (de gondolom a hibakezelést csak innen a postból hagytad ki).
Kösz, eszembe se jutott ez az n-ig összehasonlító fgv.
Visszatérve egy korábbi kérdésemre: valgrind
Feltettem ubuntut,valgrind-et. Futtattam --leak-check=full --showreachable=yes paraméterekkel, sok okosságot kiírt, de hogy tudnám azt megnézni h összesen mennyi memóriát használt a progi, ne csak azt amit malloc-al foglaltam le? Mindent, lokális,globális,fgv argumentumok változói stb...
Vagy nincs ilyen lehetőség? -
Jester01
veterán
Lenne egy egyszerű kliens-szerver progi,amiben a két fél tud egymással chatelni ill. a kliens fájlokat tölthet le a szerverről.
A kérdésem a recv()-el kapcsolatban lenne.
Ha elküldök egy üzenetet:send(client_sock,"download_over",13,0);
Akkor a fogadásnál szükség van erre?
#define BUFF_SIZE 1024
.......
char msg[BUFF_SIZE];
int len;
......
len=recv(sock,msg,BUFF_SIZE,0);
msg[len]='\0';
if(strcmp(msg,"download_over")==0) { ....}Tehát le kell zárni a stringet, vagy ez automatikusan megtörténik ?
/esetleg a send-nél 14-t kellene megadni, és akkor másolódik át automatikusan a lezáró '\0' ? /Igen, a lezáró nulla csak akkor megy át, ha 14 byteot küldesz. Jelen esetben amúgy nem is kell lezárni: if (len == 13 && strncmp(msg, "download_over", 13) == 0) ....
Ja és a recv visszaadhat hibakódot (-1) vagy éppenséggel BUFF_SIZE értéket is és ezekben az esetekben a msg[len]='\0'; felettéb szerencsétlen lenne (de gondolom a hibakezelést csak innen a postból hagytad ki).
-
skylaner
senior tag
Lenne egy egyszerű kliens-szerver progi,amiben a két fél tud egymással chatelni ill. a kliens fájlokat tölthet le a szerverről.
A kérdésem a recv()-el kapcsolatban lenne.
Ha elküldök egy üzenetet:send(client_sock,"download_over",13,0);
Akkor a fogadásnál szükség van erre?
#define BUFF_SIZE 1024
.......
char msg[BUFF_SIZE];
int len;
......
len=recv(sock,msg,BUFF_SIZE,0);
msg[len]='\0';
if(strcmp(msg,"download_over")==0) { ....}Tehát le kell zárni a stringet, vagy ez automatikusan megtörténik ?
/esetleg a send-nél 14-t kellene megadni, és akkor másolódik át automatikusan a lezáró '\0' ? / -
Gyuri16
senior tag
-
emvy
félisten
Mert valojaban igy nez ki:
#include <stdio.h>
int main()
{
int a=4, b=9;
int c;
c=a; a=b;b=c;
printf("%d %d",a,b); // 9 4
return 0;
}Tehat nem tortenik fuggvenyhivas.
-
skylaner
senior tag
Megtudnátok mondani, hogy az alábbi kód, hogyan/miért működik pointerek nélkül?
#include <stdio.h>
#define csere(a, b) { int c; c=a; a=b; b=c; }
int main()
{
int a=4, b=9;
csere(a,b);
printf("%d %d",a,b); // 9 4
return 0;
} -
bodisjani
csendes tag
Köszi!
Igaz csak enterre tér vissza, de mindegy.
így már lett egy működő programom
Esetleg tudnál segíteni, honnan lehet értelmes mintaprogikhoz és valami oktatóanyaghoz jutni?
-
Gyuri16
senior tag
a programod lefut rendben.
vagy nyiss egy konzolt, es onnan inditsd el, akkor latod a kimenetet, vagy tegyel a programod vegere egy getchar()-t (ez var amig megnyomsz valamilyen billentyut) -
bodisjani
csendes tag
Sziasztok!
Most kezdek C-vel bajlódni és az első lépéseknél el is akadtam: A fordító Dev-C++, az oprendszer Vista, a probléma pedig az, hogy a prgram lefordítódik, le is fut, csak azonnal be is záródik az ablak. Az egészből csak egy villanást látok. ???
Előre is köszi!!
-
ReJim
őstag
sziasztok c-ben hogyan tudok udp-n adatot küldeni?
(server linuxon, kliens winen. gcc fordítók, winen devc++ és mingw)ez a kód jó lenne nekem, de winre nem találok headert:
/*********************** udpclient.c ***********************/\
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h> /* memset() */
#include <sys/time.h> /* select() */
#define REMOTE_SERVER_PORT 1500
#define MAX_MSG 100
int main(int argc, char *argv[]) {
int sd, rc, i;
struct sockaddr_in cliAddr, remoteServAddr;
struct hostent *h;
/* check command line args */
if(argc<3) {
printf("usage : %s <server> <data1> ... <dataN> \n", argv[0]);
exit(1);
}
/* get server IP address (no check if input is IP address or DNS name */
h = gethostbyname(argv[1]);
if(h==NULL) {
printf("%s: unknown host '%s' \n", argv[0], argv[1]);
exit(1);
}
printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name,
inet_ntoa(*(struct in_addr *)h->h_addr_list[0]));
remoteServAddr.sin_family = h->h_addrtype;
memcpy((char *) &remoteServAddr.sin_addr.s_addr,
h->h_addr_list[0], h->h_length);
remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT);
/* socket creation */
sd = socket(AF_INET,SOCK_DGRAM,0);
if(sd<0) {
printf("%s: cannot open socket \n",argv[0]);
exit(1);
}
/* bind any port */
cliAddr.sin_family = AF_INET;
cliAddr.sin_addr.s_addr = htonl(INADDR_ANY);
cliAddr.sin_port = htons(0);
rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr));
if(rc<0) {
printf("%s: cannot bind port\n", argv[0]);
exit(1);
}
/* send data */
for(i=2;i<argc;i++) {
rc = sendto(sd, argv[i], strlen(argv[i])+1, 0,
(struct sockaddr *) &remoteServAddr,
sizeof(remoteServAddr));
if(rc<0) {
printf("%s: cannot send data %d \n",argv[0],i-1);
close(sd);
exit(1);
}
}
return 1;
}valakinek valami ötlete?
megvan, találtam megoldást, csak a devc-bena projekthez kellett állítani egy paramétert...
-
ReJim
őstag
sziasztok c-ben hogyan tudok udp-n adatot küldeni?
(server linuxon, kliens winen. gcc fordítók, winen devc++ és mingw)ez a kód jó lenne nekem, de winre nem találok headert:
/*********************** udpclient.c ***********************/\
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h> /* memset() */
#include <sys/time.h> /* select() */
#define REMOTE_SERVER_PORT 1500
#define MAX_MSG 100
int main(int argc, char *argv[]) {
int sd, rc, i;
struct sockaddr_in cliAddr, remoteServAddr;
struct hostent *h;
/* check command line args */
if(argc<3) {
printf("usage : %s <server> <data1> ... <dataN> \n", argv[0]);
exit(1);
}
/* get server IP address (no check if input is IP address or DNS name */
h = gethostbyname(argv[1]);
if(h==NULL) {
printf("%s: unknown host '%s' \n", argv[0], argv[1]);
exit(1);
}
printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name,
inet_ntoa(*(struct in_addr *)h->h_addr_list[0]));
remoteServAddr.sin_family = h->h_addrtype;
memcpy((char *) &remoteServAddr.sin_addr.s_addr,
h->h_addr_list[0], h->h_length);
remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT);
/* socket creation */
sd = socket(AF_INET,SOCK_DGRAM,0);
if(sd<0) {
printf("%s: cannot open socket \n",argv[0]);
exit(1);
}
/* bind any port */
cliAddr.sin_family = AF_INET;
cliAddr.sin_addr.s_addr = htonl(INADDR_ANY);
cliAddr.sin_port = htons(0);
rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr));
if(rc<0) {
printf("%s: cannot bind port\n", argv[0]);
exit(1);
}
/* send data */
for(i=2;i<argc;i++) {
rc = sendto(sd, argv[i], strlen(argv[i])+1, 0,
(struct sockaddr *) &remoteServAddr,
sizeof(remoteServAddr));
if(rc<0) {
printf("%s: cannot send data %d \n",argv[0],i-1);
close(sd);
exit(1);
}
}
return 1;
}valakinek valami ötlete?
-
Jester01
veterán
-
skylaner
senior tag
Igazad van.
Persze lehetne így is: while((a=getchar())!='\n') {.....}MÁS:
Hogy/mivel tudom megnézni,hogy a program futása során mennyi memóriát használt ?
-
Jester01
veterán
Viszont nincs benne hossz korlátozás ezért használata erősen ellenjavalt (buffer overrun). Helyette általában az fgets ajánlott, de vigyázat, az viszont eltárolja a sorvég jelet is. Jelen esetben azonban teljesen felesleges sorokat olvasni, mivel a feladat karakter-orientált.
-
cellpeti
nagyúr
-
skylaner
senior tag
-
cellpeti
nagyúr
Én így csináltam, de szerintem egyáltalán nem bonyolult.
int main(){
char a[255], b[255];
int i=0,space=0,j=0,hossz;
printf("Bemenet:");
gets(a);
hossz=strlen(a);
for(i=0;i<hossz;i++) {
if(a[i]==' ') space++;
if(a[i]!=' '){
b[j]=a[i];
space=0;
j++;
}
if(space==1){
b[j]=a[i];
j++;
}
}
b[j]='\0';
printf("Kimenet:%s\n",b);
getch();
return 0;
}Aztán biztos van egyszerűbb megoldás is,de elsőre ez jutott eszembe.(Mondjuk Perl-be egy sor lenne az egész
)mi az a gets?

-
skylaner
senior tag
Én így csináltam, de szerintem egyáltalán nem bonyolult.
int main(){
char a[255], b[255];
int i=0,space=0,j=0,hossz;
printf("Bemenet:");
gets(a);
hossz=strlen(a);
for(i=0;i<hossz;i++) {
if(a[i]==' ') space++;
if(a[i]!=' '){
b[j]=a[i];
space=0;
j++;
}
if(space==1){
b[j]=a[i];
j++;
}
}
b[j]='\0';
printf("Kimenet:%s\n",b);
getch();
return 0;
}Aztán biztos van egyszerűbb megoldás is,de elsőre ez jutott eszembe.(Mondjuk Perl-be egy sor lenne az egész
) -
cellpeti
nagyúr
a könyv elején van,nem hiszem,hogy ilyen bonyolult lenne a megoldás

-
cellpeti
nagyúr
-
skylaner
senior tag
-
Jester01
veterán
Nekem is lenne egy kérdésem.
Kb. 1,5 éve nem foglalkoztam a C-vel, elvileg számgép-háló 2-n ebbe fogunk programozni, így
az a gondolatom támadt, hogy nem ártana átnézni a dolgokat
Na szóval lenne nekem egy bináris keresőfás programocskám, ami működik is, annyi lenne a kérdésem, h az alábbi fgv valóban felszabadítja-e a lefoglalt memóriát. Jó ez így, vagy máshogy kellene csinálni ?
typedef struct fa{
int ID;
struct fa* left;
struct fa* right;
} Fa;
........
void felszabadit(Fa* myFa)
{
if(!myFa) return;
felszabadit(myFa->left);
felszabadit(myFa->right);
free(myFa);
}
int main() {
Fa* myFa=NULL;
.........................
felszabadit(myFa);
myFa=NULL;
return 0;
}Vagy esetleg magának a pointernek a címet kellene átadni, felszabadit(&myFa) és akkor void felszabadit(Fa** myFa) ......?
Ránézésre jó.

MOD: eltekintve attól, hogy összevissza kevered a nyelveket (mmint a magyart meg az angolt)
-
skylaner
senior tag
-
cellpeti
nagyúr
-
skylaner
senior tag
Valami ilyesmi szerintem.
*=szóköz
bemenet:dfsdfsdf*dfsdf***dfsdf********fdfd*fdsf****
kimenet: dfsdfsdf*dfsdf*dfsdf*fdfd*fdsf* -
cellpeti
nagyúr
Sziasztok!
Nekem van egy feladatom,de nem teljesen értem.
Írjunk programot,ami a bemenetre adott szöveget úgy másoljuk át a kimenetre,hogy közben az egy vagy több szóközből álló karaktersorozatokat egyetlen szóközzel helyettesíti!Mi a feladat végülis?
-
skylaner
senior tag
Nekem is lenne egy kérdésem.
Kb. 1,5 éve nem foglalkoztam a C-vel, elvileg számgép-háló 2-n ebbe fogunk programozni, így
az a gondolatom támadt, hogy nem ártana átnézni a dolgokat
Na szóval lenne nekem egy bináris keresőfás programocskám, ami működik is, annyi lenne a kérdésem, h az alábbi fgv valóban felszabadítja-e a lefoglalt memóriát. Jó ez így, vagy máshogy kellene csinálni ?
typedef struct fa{
int ID;
struct fa* left;
struct fa* right;
} Fa;
........
void felszabadit(Fa* myFa)
{
if(!myFa) return;
felszabadit(myFa->left);
felszabadit(myFa->right);
free(myFa);
}
int main() {
Fa* myFa=NULL;
.........................
felszabadit(myFa);
myFa=NULL;
return 0;
}Vagy esetleg magának a pointernek a címet kellene átadni, felszabadit(&myFa) és akkor void felszabadit(Fa** myFa) ......?
-
Jester01
veterán
Bocsi, hogy csak most válaszolok, nem nagyon voltam gépközelben!
Köszönöm, hogy megírtad, ez nagyon faszán működik!

Pár rövid pluszkérdés:
1.) Ami érdekességet (számomra érdekes) felfedeztem, hogy ha sima Notepad-del, Unicode kódolással mentek egy fájlt, akkor nem működik a program, és egy 0 bájtos verziót készít el, míg az ANSI kódolásúakkal nincs probléma. Ez mitől van?
(Ha Notepad++-szal készítem el ugyanazt a fájlt, amiért a sima Notepad pampog, hogy elveszhetnek egyes karakterek, ha nem Unicode-ban mentem, akkor semmi para. Gondolom alapvetően a Notepad++ ANSI kódolással készíti el a fájlt, nem?)
2.) A "const int column" miért fontos, hogy const legyen?
3.) A "char infilename[MAX_FILENAME_LENGTH + 1];" sornál miért kell a +1?
4.) Ugyanígy ott van a plusz 1 a "char outfilename[MAX_FILENAME_LENGTH + 9]; /* a +8 a _jav.txt miatt */" sorban.
5.) A többin még gondolkozom...

Még egyszer köszönöm, hogy megírtad!

1. azért mert unicode (akár utf8 akár utf16/ucs2) esetén nem 1 byte 1 karakter. Utf16 esetén továbbá sok 0 byte is előfordul ami C-ben sajnos a string végét jelzi.
2. nem fontos, de ha egyszer konstans, akkor miért ne
3-4. lásd a kollega válaszát fentebb
5. jó
-
skylaner
senior tag
Bocsi, hogy csak most válaszolok, nem nagyon voltam gépközelben!
Köszönöm, hogy megírtad, ez nagyon faszán működik!

Pár rövid pluszkérdés:
1.) Ami érdekességet (számomra érdekes) felfedeztem, hogy ha sima Notepad-del, Unicode kódolással mentek egy fájlt, akkor nem működik a program, és egy 0 bájtos verziót készít el, míg az ANSI kódolásúakkal nincs probléma. Ez mitől van?
(Ha Notepad++-szal készítem el ugyanazt a fájlt, amiért a sima Notepad pampog, hogy elveszhetnek egyes karakterek, ha nem Unicode-ban mentem, akkor semmi para. Gondolom alapvetően a Notepad++ ANSI kódolással készíti el a fájlt, nem?)
2.) A "const int column" miért fontos, hogy const legyen?
3.) A "char infilename[MAX_FILENAME_LENGTH + 1];" sornál miért kell a +1?
4.) Ugyanígy ott van a plusz 1 a "char outfilename[MAX_FILENAME_LENGTH + 9]; /* a +8 a _jav.txt miatt */" sorban.
5.) A többin még gondolkozom...

Még egyszer köszönöm, hogy megírtad!

3-4
Mert a C automatikusan a string végére tesz egy '\0'-t, így tudja, h vége annak a stringnek.
Így n hosszú strignek n+1 nagyságú tömb kell.
Amikor pl te ezt írod,hogy: char a[]="abc" akkor a fordító automatikusan lefoglal +1 helyet még a \0-nak.char a[]="abc";
char b[]={'a','b','c','\0'};
printf("%d\n",sizeof(a)); // 4byte
printf("%d\n",sizeof(b)); // 4byte -
Sk8erPeter
nagyúr
Na itt az én verzióm, hogy ti is kötözködhessetek. Amit még én magamba belekötök, hogy lehetne még:
1. függvényekre szétszedni
2. a hosszú fájlneveket is (láncolt listával) kezelni
3. a tab-okat kezelni
4. locale beállításokat figyelembe venni
5. a kimenő fájlnevet szebben előállítani
6. parancssori argumentumokat kezelniBocsi, hogy csak most válaszolok, nem nagyon voltam gépközelben!
Köszönöm, hogy megírtad, ez nagyon faszán működik!

Pár rövid pluszkérdés:
1.) Ami érdekességet (számomra érdekes) felfedeztem, hogy ha sima Notepad-del, Unicode kódolással mentek egy fájlt, akkor nem működik a program, és egy 0 bájtos verziót készít el, míg az ANSI kódolásúakkal nincs probléma. Ez mitől van?
(Ha Notepad++-szal készítem el ugyanazt a fájlt, amiért a sima Notepad pampog, hogy elveszhetnek egyes karakterek, ha nem Unicode-ban mentem, akkor semmi para. Gondolom alapvetően a Notepad++ ANSI kódolással készíti el a fájlt, nem?)
2.) A "const int column" miért fontos, hogy const legyen?
3.) A "char infilename[MAX_FILENAME_LENGTH + 1];" sornál miért kell a +1?
4.) Ugyanígy ott van a plusz 1 a "char outfilename[MAX_FILENAME_LENGTH + 9]; /* a +8 a _jav.txt miatt */" sorban.
5.) A többin még gondolkozom...

Még egyszer köszönöm, hogy megírtad!

-
cellpeti
nagyúr
-
Lortech
addikt
-
PazsitZ
addikt
-
cellpeti
nagyúr
-
Lortech
addikt
-
cellpeti
nagyúr
jó a program! tényleg lefut! de nekem void main(void)-val kezdenem a progit és úgy viszont nem fut le.

-
cousin333
addikt
Sziasztok!
Van nekem egy olyan feladatom,hogy a bemeneti szöveget úgy kell átmásolni a kimenetre,hogy a közben előforduló tabulátorkaraktereket \t,a visszaléptetés \b és a fordított törtvonal(backslash) karaktereket \\ karakterekkel helyettesíti.
Na én elkezdtem ezt a progit,de \\ helyet csak \ rak,ez valszeg a putchar miatt van,valszeg nem ezt kell használni. Megpróbáltam printf-vel is,de ott se jutottam előrébb. Lehet az egész rossz,ahogy elkezdtem,ezért ha valaki tud adjon tanácsot,megkösszönném.
a kód:
#include<stdio.h>
void main(void) {
int c;
c = getchar();
while(c!=EOF)
{
if (c=='\t') putchar('\\');
if (c=='\b') putchar('\\');
if (c=='/') putchar('\\');
else putchar(c);
c=getchar();
}
}Esetleg egy darab if-ben nem lehetne megoldani a dolgot?
"Esetleg egy darab if-ben nem lehetne megoldani a dolgot?"
De, erre van a switch-case szerkezet. [link]. Mondjuk a példa nem lesz tőle egyszerűbb.
-
cousin333
addikt
Visszatérési érték, hogy minden frankón lefutott.
A "\" meg az escape karakter, aminek speciális jelentése van (pl. a "\n" jelzi a sortörést), éppen ezért nem lehet csak úgy magában leírni, hanem duplázni kell, jelezve, hogy kivételesen tényleg egy "\"-re vágysz.
-
cellpeti
nagyúr
egészen addig vágom a dolgot,amíg nem jön oda a return 0,az mire kell oda?
-
PazsitZ
addikt
vagy ha mindenképp a putchar('\\'); kell akkor 2db putchar-t raksz az if ágba.
-
PazsitZ
addikt
Én így csinálnám:
#include<stdio.h>
int main() {
int c;
c = getchar();
while(c!=EOF)
{
if (c=='\t') printf("\\\\");
if (c=='\b') printf("\\\\");
if (c=='/') printf("\\\\");
else putchar(c);
c=getchar();
}
return 0;
}De nem biztos, hogy a legjobb megoldás, régen c-ztem.

-
cellpeti
nagyúr
-
cellpeti
nagyúr
A Build-ot megtaláltam, de sötét színben van (nem tudom használni). Nem tudsz esetleg egy olyan "fordító programot"?
-
SLD
tag
Sziasztok!
Van nekem egy olyan feladatom,hogy a bemeneti szöveget úgy kell átmásolni a kimenetre,hogy a közben előforduló tabulátorkaraktereket \t,a visszaléptetés \b és a fordított törtvonal(backslash) karaktereket \\ karakterekkel helyettesíti.
Na én elkezdtem ezt a progit,de \\ helyet csak \ rak,ez valszeg a putchar miatt van,valszeg nem ezt kell használni. Megpróbáltam printf-vel is,de ott se jutottam előrébb. Lehet az egész rossz,ahogy elkezdtem,ezért ha valaki tud adjon tanácsot,megkösszönném.
a kód:
#include<stdio.h>
void main(void) {
int c;
c = getchar();
while(c!=EOF)
{
if (c=='\t') putchar('\\');
if (c=='\b') putchar('\\');
if (c=='/') putchar('\\');
else putchar(c);
c=getchar();
}
}Esetleg egy darab if-ben nem lehetne megoldani a dolgot?
Ez nem gond, a \ jellel aktiválod, az őt követő karakter "különleges értelmezését", ami legtöbbször egy formázó karakter. Szóval az első \-el aktiváltad ezt, így a második \ megjelent (itt saját maga esetén persze nem aktiválod vele, hanem tulajdonképpen deaktiválod, de ez már csak részletkérdés), ha ebből Neked két darabot kell kiíratnod, akkor \\\\ -t (4x) kell írnod.
Szerk: No persze, ha a putchar, csak egy char-t tud kezelni akkor az lehet gond lesz, mert két \ már két karakter, várunk egy C -s kollegát

A kódhoz, C++-os lévén, inkább nem szólok hozzá, de ha már kiírt egy \-t akkor nagy baj nem lehet.
-
cellpeti
nagyúr
Sziasztok!
Van nekem egy olyan feladatom,hogy a bemeneti szöveget úgy kell átmásolni a kimenetre,hogy a közben előforduló tabulátorkaraktereket \t,a visszaléptetés \b és a fordított törtvonal(backslash) karaktereket \\ karakterekkel helyettesíti.
Na én elkezdtem ezt a progit,de \\ helyet csak \ rak,ez valszeg a putchar miatt van,valszeg nem ezt kell használni. Megpróbáltam printf-vel is,de ott se jutottam előrébb. Lehet az egész rossz,ahogy elkezdtem,ezért ha valaki tud adjon tanácsot,megkösszönném.
a kód:
#include<stdio.h>
void main(void) {
int c;
c = getchar();
while(c!=EOF)
{
if (c=='\t') putchar('\\');
if (c=='\b') putchar('\\');
if (c=='/') putchar('\\');
else putchar(c);
c=getchar();
}
}Esetleg egy darab if-ben nem lehetne megoldani a dolgot?
-
skoda12
aktív tag
Sziasztok.
Nem tudom ki hallott már a SE és Siemens telefonokon futtatható elfekről. Ezek apró kis programok, amelyek közvetlenül a hardverrel kommunikálnak, tehát elég gyorsan tudnak futni.
Viszont elég kevés elfnek nyilvános a forráskódja, és ennek hiányában nem igazán lehet belenyúlni, gondolok itt a lefordítást más nyelvre. Valamilyen szinten hex editorral ugye át lehet írni a karaktereket benne, de az nem az igazi. Ha jól tudom ezek C-ben vannak írva, tehát remélem jó helyen érdeklődök. Mégpedig afelől, hogy létezik-e olyan program, ami képes visszafejteni a kész, futtatható programot forráskódra. Mellékelek pár elfet (meg 1-2 forráskódot is, amihez nyilvános), csakhogy tudjátok miről beszélek.
[link]
Tudom, hogy az lenne a legegyszerűbb, hogy megkeresném a készítőket és elkérném a kódot, de ez sajnos nem járható út, mivel orosz barátaink nem szívesen adják azt ki.
Előre is köszönöm, ha valaki veszi a fáradtságot és foglalkozik velem.
üdv,
batonyoSosem foglalkoztam telefonokkal, de ha egy forráskódból futtatható binárist készítesz, akkor abból nem kapható vissza az eredeti forráskód. Az azonosítókat nem fordítják bele, így pl változóneveket, függvényneveket biztos nem lehet visszahozni. Ha van a telefonokra valami assembly szerű nyelv, akkor ilyen assembly utasításokra valószínűleg vissza lehet fejteni.
-
skoda12
aktív tag
-
426os
őstag
Sziasztok.
Nem tudom ki hallott már a SE és Siemens telefonokon futtatható elfekről. Ezek apró kis programok, amelyek közvetlenül a hardverrel kommunikálnak, tehát elég gyorsan tudnak futni.
Viszont elég kevés elfnek nyilvános a forráskódja, és ennek hiányában nem igazán lehet belenyúlni, gondolok itt a lefordítást más nyelvre. Valamilyen szinten hex editorral ugye át lehet írni a karaktereket benne, de az nem az igazi. Ha jól tudom ezek C-ben vannak írva, tehát remélem jó helyen érdeklődök. Mégpedig afelől, hogy létezik-e olyan program, ami képes visszafejteni a kész, futtatható programot forráskódra. Mellékelek pár elfet (meg 1-2 forráskódot is, amihez nyilvános), csakhogy tudjátok miről beszélek.
[link]
Tudom, hogy az lenne a legegyszerűbb, hogy megkeresném a készítőket és elkérném a kódot, de ez sajnos nem járható út, mivel orosz barátaink nem szívesen adják azt ki.
Előre is köszönöm, ha valaki veszi a fáradtságot és foglalkozik velem.
üdv,
batonyo -
cellpeti
nagyúr
Hogyan tudom kiiratni EOF értékét?Mert ilyen progit kéne megírnom,de ....

-
Jester01
veterán
Hali!
Köszi, hogy megírtad, de ez a program igen érdekes dolgokat csinál
A végeredmény az lesz, hogy MINDEN karakter után tesz egy szóközt. Egy fájlnál az összes sortörést is kitörölte (mondjuk nem értem, hogy ezt a másiknál miért nem tette).
Szemléltetésként ilyen lesz: [link] (itt épp php-kódokat másoltam ki pdf-ből, a sorszámozást ki akartam szedni, de ez a lényeg szempontjából tök mindegy)Első lefordításnál ilyen hibát dob:

(már a while(!feof(filelist))-nél baja van)
Gondolom ezért is működik hibásan többek közt...
Aztán már le sem akar fordulni (létrehozni az exe-t), na mindegy, itt valami nagyon nem jó...
De azért thx.
Egy javított verzió jól jönne...
Előre is köszi!Egyébként az "általános kérdéseket" hajnali fél 5 közeledtével fogalmaztam meg, így simán elképzelhető, hogy hülye kérdést tettem fel...

(#1103) doc: igazából mindkettő... de inkább gyakorolni szeretnék C-ben.
Nem használok Linuxot (egyelőre). Tehát elsősorban a C-s megoldás érdekelne.
Nyilván létezik egyébként olyan külső program (pl. Lupas Rename), amivel lazán megoldható, de abból nem lehet tanulni.(#1104) Jester01: Esetleg tudnál egy javított változatot mutatni?

Na itt az én verzióm, hogy ti is kötözködhessetek. Amit még én magamba belekötök, hogy lehetne még:
1. függvényekre szétszedni
2. a hosszú fájlneveket is (láncolt listával) kezelni
3. a tab-okat kezelni
4. locale beállításokat figyelembe venni
5. a kimenő fájlnevet szebben előállítani
6. parancssori argumentumokat kezelni -
Jester01
veterán
Hali!
Köszi, hogy megírtad, de ez a program igen érdekes dolgokat csinál
A végeredmény az lesz, hogy MINDEN karakter után tesz egy szóközt. Egy fájlnál az összes sortörést is kitörölte (mondjuk nem értem, hogy ezt a másiknál miért nem tette).
Szemléltetésként ilyen lesz: [link] (itt épp php-kódokat másoltam ki pdf-ből, a sorszámozást ki akartam szedni, de ez a lényeg szempontjából tök mindegy)Első lefordításnál ilyen hibát dob:

(már a while(!feof(filelist))-nél baja van)
Gondolom ezért is működik hibásan többek közt...
Aztán már le sem akar fordulni (létrehozni az exe-t), na mindegy, itt valami nagyon nem jó...
De azért thx.
Egy javított verzió jól jönne...
Előre is köszi!Egyébként az "általános kérdéseket" hajnali fél 5 közeledtével fogalmaztam meg, így simán elképzelhető, hogy hülye kérdést tettem fel...

(#1103) doc: igazából mindkettő... de inkább gyakorolni szeretnék C-ben.
Nem használok Linuxot (egyelőre). Tehát elsősorban a C-s megoldás érdekelne.
Nyilván létezik egyébként olyan külső program (pl. Lupas Rename), amivel lazán megoldható, de abból nem lehet tanulni.(#1104) Jester01: Esetleg tudnál egy javított változatot mutatni?

Szerintem a fájlod esetleg unicode lehet, az bekavarhat.
-
Jester01
veterán
2. Igen, kipróbáltam, bizonyára azért működött, mert nem volt '\n' a sor végén.
3. Oké, elfogadom, én nem szoktam, lehet azért írtam így.
4. Ez oké, de nem akartam bele hibakezelést írni, meg overflowokra figyelni, mert az kétszer ennyi kód, jelzésnek viszont ott volt, hogy mire képes.
5. Szerencsére itt nem voltak olyan méretek.
6-7. Ennek ellent kell mondjak rengeteg forráskódot küldtem már programozó versenyekre, ahol oline judge fordít ANSI C fordítóval, és nem igényelte a headereket, tulajdonképpen még az stdio.h-t sem.
10. Ez kérdéses, hogy mikor jó, mikor nem. Ebben a kódban semmi jelentősége nem volt, hogy globálisak a változók, egy másik példában lehet zavart okoz, egy másikban meg lehet, hogy pont úgy célszerű.
11. Valóban nem tudhatom, ha ilyen egyéni igények vannak, akkor lehet változtatásokat eszközölni.
12. Nincs rendben, de mondtam, hogy ennek kivédését nem állt szándékomban megírni.5. Nem, de miért nem írod egyből jóra a programot? Azért, hogy extra pénzt kaszálj majd a professional verzióért ami nagyobb fájlokat is tud kezelni? Igen, lefordul, csak esetleg nem működik. Ráadásul a változó argumentumot használó függvényeknek ansi C szerint is kötelező a prototípus (pl. fscanf, printf) tehát általában az stdio.h bizony nem elhagyható. Az meg, hogy egy adott fordító esetleg mit eszik meg és mit nem, abszolút nem befolyásolja hogy mi van a szabványban vagy hogy mi a helyes.
6-7. melyik részének mondasz ellent? Annak, hogy int a prototípus nélküli függvények visszatérési értéke vagy annak, hogy pl. 64 biten piszkosul megszívod ha int-et használsz pointer helyett?
A többire pedig továbbra is csak azt tudom mondani, hogy lehetőleg ne ezt tanítsd egy kezdőnek.
-
Sk8erPeter
nagyúr
2. Igen, kipróbáltam, bizonyára azért működött, mert nem volt '\n' a sor végén.
3. Oké, elfogadom, én nem szoktam, lehet azért írtam így.
4. Ez oké, de nem akartam bele hibakezelést írni, meg overflowokra figyelni, mert az kétszer ennyi kód, jelzésnek viszont ott volt, hogy mire képes.
5. Szerencsére itt nem voltak olyan méretek.
6-7. Ennek ellent kell mondjak rengeteg forráskódot küldtem már programozó versenyekre, ahol oline judge fordít ANSI C fordítóval, és nem igényelte a headereket, tulajdonképpen még az stdio.h-t sem.
10. Ez kérdéses, hogy mikor jó, mikor nem. Ebben a kódban semmi jelentősége nem volt, hogy globálisak a változók, egy másik példában lehet zavart okoz, egy másikban meg lehet, hogy pont úgy célszerű.
11. Valóban nem tudhatom, ha ilyen egyéni igények vannak, akkor lehet változtatásokat eszközölni.
12. Nincs rendben, de mondtam, hogy ennek kivédését nem állt szándékomban megírni."mert nem volt '\n' a sor végén." De itt pont különálló, sortöréssel elválasztott sorokról van szó... bár lehet, hogy félreértelek...

Milyen fordítóval próbáltad? Nálam most Visual Studio 2003 van fent (azért használom ezt egyelőre, mert egyetemen is ezt használják szoftver laboron, nem akarom, hogy a fordító különbözősége miatt ott jelentkezzen egy hiba, amire nem számítok)
Most még mindig csak azt nem tudom, hogyan is kéne akkor megoldani a feladatot, na majd próbálkozom...
Azért kérdeztem egyébként, hogy mivel olvastassam be az adatokat, mert lehetne fscanf(), fgets(), fgetc(), fread(), és még ki tudja, hány függvénnyel is elvégeztetni ezt a feladatot (fgetc nyilván nem jó, meg fscanf sem, asszem annak is van valami szóköz-problémája).
Valami olyasmire gondoltam egyébként, hogy a progi a beolvasáskor az első /n-ig elmegy, eltárol egy sort valamilyen tömbbe vagy akármibe, és ezt úgy adja ki, hogy az 5. karaktertől lesz kiírva. Végül is ha tömbként kezelem, akkor elvileg a 0. elemtől kezdi, akkor elég lenne csak hozzáadni +4-et, hogy kezdje onnan, nem? -
Benmartin
senior tag
Azért kötözködtem, mert tanuláshoz rossz példa.
2. Izé, kipróbáltad? Mert nem működik, mivel a feof csak azután lesz igaz, hogy túlmész a fájl végén. Tehát előfordulhat, hogy eggyel többször fut a ciklusod és az utolsó alkalommal ki tudja milyen adatra. Ehhez csak az kell, hogy az utolsó sor végén is legyen egy soremelés (márpedig ez normális dolog). Egyébként is pl. %d esetén vagy bonyolultabb formátumstringnél abból tudod, hogy sikerült-e beolvasni valamit. ellenkező esetben könnyen végtelen ciklus lehet (ugyanis olyankor a fscanf nem eszi meg a hibás adatot, de feof sem lesz)
3. sajnos de. sőt, még ékezeteket is. sokat szívok ezekkel én is a munkám során, főleg linux-windows közötti másolgatás nagy élmény (meg a kalapos vs. rendes ő/ű)
4. az azért van, hogy annyit kezel a programod, addig ok. de sehol nem biztosítod, hogy ne is legyen több. Az fscanf jelen formájában vidáman megesz többet is és szép buffer overflow lesz belőle. Ezt is jobb idejekorán megtanulni.
5. igen, és ez a rossz. már miért is ne lehetne egy 120GB-os fájlt feldolgozni csak azért mert nincs 120GB memóriám.
6-7. már hogyne kellene. Amelyik függvénynek nincs prototípusa, azt alapból int visszatérési értékkel feltételezi a fordító. Márpedig sem a malloc sem pedig az strcat nem int-tel tér vissza. És ha az int véletlen nem binárisan kompatibilis a void* illetve a char* típusokkal (pl 64 bites rendszer esetén) akkor az instant segfault.
10. szerintem nem fölösleges, jobb ha az újonc azt látja hogy a változókat a lehető legszűkebb körben deklaráljuk
11. azt te honnan tudod? És ha 5GB-os fájlra akarom futtatni? Vagy 128kB-osra 16 bites rendszeren?
12. ja és akkor nem kell. pl ha egy fájl (vagy sor) véletlen nincs 4 karakter akkor a program összeomlása az rendben van?2. Igen, kipróbáltam, bizonyára azért működött, mert nem volt '\n' a sor végén.
3. Oké, elfogadom, én nem szoktam, lehet azért írtam így.
4. Ez oké, de nem akartam bele hibakezelést írni, meg overflowokra figyelni, mert az kétszer ennyi kód, jelzésnek viszont ott volt, hogy mire képes.
5. Szerencsére itt nem voltak olyan méretek.
6-7. Ennek ellent kell mondjak rengeteg forráskódot küldtem már programozó versenyekre, ahol oline judge fordít ANSI C fordítóval, és nem igényelte a headereket, tulajdonképpen még az stdio.h-t sem.
10. Ez kérdéses, hogy mikor jó, mikor nem. Ebben a kódban semmi jelentősége nem volt, hogy globálisak a változók, egy másik példában lehet zavart okoz, egy másikban meg lehet, hogy pont úgy célszerű.
11. Valóban nem tudhatom, ha ilyen egyéni igények vannak, akkor lehet változtatásokat eszközölni.
12. Nincs rendben, de mondtam, hogy ennek kivédését nem állt szándékomban megírni. -
Benmartin
senior tag
Hali!
Köszi, hogy megírtad, de ez a program igen érdekes dolgokat csinál
A végeredmény az lesz, hogy MINDEN karakter után tesz egy szóközt. Egy fájlnál az összes sortörést is kitörölte (mondjuk nem értem, hogy ezt a másiknál miért nem tette).
Szemléltetésként ilyen lesz: [link] (itt épp php-kódokat másoltam ki pdf-ből, a sorszámozást ki akartam szedni, de ez a lényeg szempontjából tök mindegy)Első lefordításnál ilyen hibát dob:

(már a while(!feof(filelist))-nél baja van)
Gondolom ezért is működik hibásan többek közt...
Aztán már le sem akar fordulni (létrehozni az exe-t), na mindegy, itt valami nagyon nem jó...
De azért thx.
Egy javított verzió jól jönne...
Előre is köszi!Egyébként az "általános kérdéseket" hajnali fél 5 közeledtével fogalmaztam meg, így simán elképzelhető, hogy hülye kérdést tettem fel...

(#1103) doc: igazából mindkettő... de inkább gyakorolni szeretnék C-ben.
Nem használok Linuxot (egyelőre). Tehát elsősorban a C-s megoldás érdekelne.
Nyilván létezik egyébként olyan külső program (pl. Lupas Rename), amivel lazán megoldható, de abból nem lehet tanulni.(#1104) Jester01: Esetleg tudnál egy javított változatot mutatni?

Mert különbözik a compilerünk, kipróbáltam mielőtt elküldtem neked.

-
Sk8erPeter
nagyúr
De megírtam, hogy ne csak dumáljak itt:
#include <stdio.h>
#define MAX_FAJLNEV_HOSSZ 100
FILE * filelist, * file;
char name[MAX_FAJLNEV_HOSSZ+1], * block;
unsigned int h;
int main()
{
filelist = fopen("filelist.txt","r");
while(!feof(filelist))
{
fscanf(filelist,"%s",name);
file = fopen(name,"r");
fseek (file,0,SEEK_END);
h = ftell(file);
rewind(file);
block = (char *) malloc(h);
fread(block,1,h,file);
block += 4;
fclose(file);
fopen(strcat(name,"_jav.txt"),"w");
fwrite(block,1,h-4,file);
fclose(file);
}
fclose(filelist);
return 0;
}Hali!
Köszi, hogy megírtad, de ez a program igen érdekes dolgokat csinál
A végeredmény az lesz, hogy MINDEN karakter után tesz egy szóközt. Egy fájlnál az összes sortörést is kitörölte (mondjuk nem értem, hogy ezt a másiknál miért nem tette).
Szemléltetésként ilyen lesz: [link] (itt épp php-kódokat másoltam ki pdf-ből, a sorszámozást ki akartam szedni, de ez a lényeg szempontjából tök mindegy)Első lefordításnál ilyen hibát dob:

(már a while(!feof(filelist))-nél baja van)
Gondolom ezért is működik hibásan többek közt...
Aztán már le sem akar fordulni (létrehozni az exe-t), na mindegy, itt valami nagyon nem jó...
De azért thx.
Egy javított verzió jól jönne...
Előre is köszi!Egyébként az "általános kérdéseket" hajnali fél 5 közeledtével fogalmaztam meg, így simán elképzelhető, hogy hülye kérdést tettem fel...

(#1103) doc: igazából mindkettő... de inkább gyakorolni szeretnék C-ben.
Nem használok Linuxot (egyelőre). Tehát elsősorban a C-s megoldás érdekelne.
Nyilván létezik egyébként olyan külső program (pl. Lupas Rename), amivel lazán megoldható, de abból nem lehet tanulni.(#1104) Jester01: Esetleg tudnál egy javított változatot mutatni?

-
Jester01
veterán
1.) Tényleg elnéztem.
2.) Meglehet, gyakorlatban azonban működik.
3.) Jó, hát általában nem teszünk szóközt a fájlokba.
4.) Azért van a MAX_FAJLNEV_HOSSZ.
5.) Több megoldás is létezik.
6.-7.) ANSI C fordítónak nem is kell.
8.) Csúnyán néznek de működik, mondjuk akár ki is lehet venni.
9.) Ez jogos.
10.) Ebbe fölösleges belekötni.
11.) long-ot, de ebből nem igen lesz probléma.
12.) Nem is akartam hibakezelést írni. (gondolom magának írja)Azért kötözködtem, mert tanuláshoz rossz példa.
2. Izé, kipróbáltad? Mert nem működik, mivel a feof csak azután lesz igaz, hogy túlmész a fájl végén. Tehát előfordulhat, hogy eggyel többször fut a ciklusod és az utolsó alkalommal ki tudja milyen adatra. Ehhez csak az kell, hogy az utolsó sor végén is legyen egy soremelés (márpedig ez normális dolog). Egyébként is pl. %d esetén vagy bonyolultabb formátumstringnél abból tudod, hogy sikerült-e beolvasni valamit. ellenkező esetben könnyen végtelen ciklus lehet (ugyanis olyankor a fscanf nem eszi meg a hibás adatot, de feof sem lesz)
3. sajnos de. sőt, még ékezeteket is. sokat szívok ezekkel én is a munkám során, főleg linux-windows közötti másolgatás nagy élmény (meg a kalapos vs. rendes ő/ű)
4. az azért van, hogy annyit kezel a programod, addig ok. de sehol nem biztosítod, hogy ne is legyen több. Az fscanf jelen formájában vidáman megesz többet is és szép buffer overflow lesz belőle. Ezt is jobb idejekorán megtanulni.
5. igen, és ez a rossz. már miért is ne lehetne egy 120GB-os fájlt feldolgozni csak azért mert nincs 120GB memóriám.
6-7. már hogyne kellene. Amelyik függvénynek nincs prototípusa, azt alapból int visszatérési értékkel feltételezi a fordító. Márpedig sem a malloc sem pedig az strcat nem int-tel tér vissza. És ha az int véletlen nem binárisan kompatibilis a void* illetve a char* típusokkal (pl 64 bites rendszer esetén) akkor az instant segfault.
10. szerintem nem fölösleges, jobb ha az újonc azt látja hogy a változókat a lehető legszűkebb körben deklaráljuk
11. azt te honnan tudod? És ha 5GB-os fájlra akarom futtatni? Vagy 128kB-osra 16 bites rendszeren?
12. ja és akkor nem kell. pl ha egy fájl (vagy sor) véletlen nincs 4 karakter akkor a program összeomlása az rendben van? -
Benmartin
senior tag
Ajjjaj ilyen rossz példával ne kábítsuk szegény tanulókat
Hirtelen ennyi:1. te nem a sorok elejéről szedted le az első 4 karaktert
2. az fscanf visszatérési értékét célszerű ellenőrizni, nem pedig a feof-ot
3. %s formátummal nem olvasunk fájlneveket (sem) mert megáll a szóközöknél
4. az fscanf-ben nincs hossz limit
5. teljesen felesleges betölteni a memóriába a fájlt
6. strcat-hoz hiányzik a megfelelő #include
7. malloc-hoz hiányzik a megfelelő #include
8. a malloc void*-ot ad vissza, csúnyán néznek azokra akik ezt cast-olják
9. a lefoglalt memóriát nem szabadítod fel
10. a változók globálisak nem lokálisak
11. az ftell nem unsigned int-et ad vissza
12. hibakezelés teljes hiánya1.) Tényleg elnéztem.
2.) Meglehet, gyakorlatban azonban működik.
3.) Jó, hát általában nem teszünk szóközt a fájlokba.
4.) Azért van a MAX_FAJLNEV_HOSSZ.
5.) Több megoldás is létezik.
6.-7.) ANSI C fordítónak nem is kell.
8.) Csúnyán néznek de működik, mondjuk akár ki is lehet venni.
9.) Ez jogos.
10.) Ebbe fölösleges belekötni.
11.) long-ot, de ebből nem igen lesz probléma.
12.) Nem is akartam hibakezelést írni. (gondolom magának írja) -
Jester01
veterán
De megírtam, hogy ne csak dumáljak itt:
#include <stdio.h>
#define MAX_FAJLNEV_HOSSZ 100
FILE * filelist, * file;
char name[MAX_FAJLNEV_HOSSZ+1], * block;
unsigned int h;
int main()
{
filelist = fopen("filelist.txt","r");
while(!feof(filelist))
{
fscanf(filelist,"%s",name);
file = fopen(name,"r");
fseek (file,0,SEEK_END);
h = ftell(file);
rewind(file);
block = (char *) malloc(h);
fread(block,1,h,file);
block += 4;
fclose(file);
fopen(strcat(name,"_jav.txt"),"w");
fwrite(block,1,h-4,file);
fclose(file);
}
fclose(filelist);
return 0;
}Ajjjaj ilyen rossz példával ne kábítsuk szegény tanulókat
Hirtelen ennyi:1. te nem a sorok elejéről szedted le az első 4 karaktert
2. az fscanf visszatérési értékét célszerű ellenőrizni, nem pedig a feof-ot
3. %s formátummal nem olvasunk fájlneveket (sem) mert megáll a szóközöknél
4. az fscanf-ben nincs hossz limit
5. teljesen felesleges betölteni a memóriába a fájlt
6. strcat-hoz hiányzik a megfelelő #include
7. malloc-hoz hiányzik a megfelelő #include
8. a malloc void*-ot ad vissza, csúnyán néznek azokra akik ezt cast-olják
9. a lefoglalt memóriát nem szabadítod fel
10. a változók globálisak nem lokálisak
11. az ftell nem unsigned int-et ad vissza
12. hibakezelés teljes hiánya -
doc
nagyúr
Hali!
Van néhány txt-fájlom, amelyeknek minden sorában az első 4 karaktert szeretném kitörölni.
Mi lenne ennek a legegyszerűbb módja?
1.) Milyen függvénnyel lenne a legjobb beolvastatni a szöveget? (soronként olvassa be, és tárolja el?
vagy hogy?)
2.) Ezen belül a fájlok elérési útját hogyan adom meg?
3.) Hogyan születik meg a javított kimeneti fájl?ezt kimondottan C-ben akarod megirni, vagy csak a megoldas a fontos?
Linux alatt ez igy nez ki:cat *txt | cut -c 5-
vagy ha kulon txt-kbe kell a vegeredmeny is:
for i in *txt; do cat $i | cut -c 5- >vagott-$i ; done
-
Benmartin
senior tag
Elég általános kérdéseket teszel fel: "Hogyan születik meg a javított kimeneti fájl?" Hát úgy, hogy létrehozod a fájlt, erre mit lehet mondani?

1.) fgets
2.) Egyébként én úgy csinálnám, hogy magát a fájlneveket is kigyűjteném egy fájlba és abból olvasnám be, majd nyitnám meg a fájlokat.
3.) fopen("javitott.txt","w")De megírtam, hogy ne csak dumáljak itt:
#include <stdio.h>
#define MAX_FAJLNEV_HOSSZ 100
FILE * filelist, * file;
char name[MAX_FAJLNEV_HOSSZ+1], * block;
unsigned int h;
int main()
{
filelist = fopen("filelist.txt","r");
while(!feof(filelist))
{
fscanf(filelist,"%s",name);
file = fopen(name,"r");
fseek (file,0,SEEK_END);
h = ftell(file);
rewind(file);
block = (char *) malloc(h);
fread(block,1,h,file);
block += 4;
fclose(file);
fopen(strcat(name,"_jav.txt"),"w");
fwrite(block,1,h-4,file);
fclose(file);
}
fclose(filelist);
return 0;
} -
Benmartin
senior tag
Hali!
Van néhány txt-fájlom, amelyeknek minden sorában az első 4 karaktert szeretném kitörölni.
Mi lenne ennek a legegyszerűbb módja?
1.) Milyen függvénnyel lenne a legjobb beolvastatni a szöveget? (soronként olvassa be, és tárolja el?
vagy hogy?)
2.) Ezen belül a fájlok elérési útját hogyan adom meg?
3.) Hogyan születik meg a javított kimeneti fájl?Elég általános kérdéseket teszel fel: "Hogyan születik meg a javított kimeneti fájl?" Hát úgy, hogy létrehozod a fájlt, erre mit lehet mondani?

1.) fgets
2.) Egyébként én úgy csinálnám, hogy magát a fájlneveket is kigyűjteném egy fájlba és abból olvasnám be, majd nyitnám meg a fájlokat.
3.) fopen("javitott.txt","w")
Új hozzászólás Aktív témák
-
1200 - 1101
6397 - 6001 6000 - 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 - 1901 1900 - 1801 1800 - 1701 1700 - 1601 1600 - 1501 1500 - 1401 1400 - 1301 1300 - 1201 1200 - 1101 1100 - 1001 1000 - 901 900 - 801 800 - 701 700 - 601 600 - 501 500 - 401 400 - 301 300 - 201 200 - 101 100 - 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 Tabletek, E-bookok Nyomtatók, szkennerek 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!
- Huawei Watch Fit 5 Pro - jó forma
- Amlogic S905, S912 processzoros készülékek
- Fujifilm X
- TV antenna és jelerősítés
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- Gyúrósok ide!
- Kerékpárosok, bringások ide!
- One otthoni szolgáltatások (TV, internet, telefon)
- Projektor topic
- Miskolc és környéke adok-veszek-beszélgetek
- További aktív témák...
- 4000GB Gen4x4 NVMe SSD, 1 év gar 4TB!!!
- SZÉP! HP ZBOOK FURY 15 G7 Tervező Vágó Laptop -70% 15,6" i7-10850H 32/512 Quadro RTX 3000 6GB FHD
- GARANCIÁLIS LEMEZES PLAYSTATION 5 SLIM CFI-2116
- NAGYKER ÁR!Sosemhasznált! HP OmniBook 5 Flip i5-1334U 8GB 512GB 14" FHD+ áthajtós-érintős Gar.: 1 év
- Macbook Pro 14" A2442 2021 M1 Pro 32/1TB Silver
- iKing.Hu - Apple MacBook Pro 16 M1 Pro (2021) 16GB/1TB SSD megkímélt 88% akku 153 ciklus
- HIBÁTLAN iPhone 12 Pro Max 256GB Pacific Blue -2 ÉV GARANCIA - Kártyafüggetlen, MS4533
- szinteÚJ Dell Pro 14 Ultra 7 255U 16GB DDR5 512GB AI PC FHD+ 1 év garancia
- ASUS TUF Gaming B760-PLUS WIFI D4 Alaplap (ddr4)
- Telefon felvásárlás!! Samsung Galaxy A13/Samsung Galaxy A33/Samsung Galaxy A53
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
















