Hirdetés

2024. április 30., kedd

Gyorskeresés

Hozzászólások

(#1051) Elektromann


Elektromann
csendes tag

Szevasztok

Most kezdem a C-t tanulni, és már le is töltöttem a Visual Studio 2008-at (c++-t tud, de úgy tudom, abba is lehet C-vel), de emellett van Notepad++-om, ami szintén tud C-be programozni, de adódott egy problémám:
Elkészítek egy programot, de nem tudom, hogy nyissam meg exe-ként. Tudtok segíteni, hogy hogy kell az ilyet megnyitni? :F

(#1052) gygabor88 válasza Elektromann (#1051) üzenetére


gygabor88
tag

Le kell fordítani a kódot egy fordítóval. VS 2008 menüjében valami olyat keress, hogy Build talán a project menüponton belül van, ha jól emlékszem.

(#1053) Elektromann


Elektromann
csendes tag

A Build-ot megtaláltam, de sötét színben van (nem tudom használni). Nem tudsz esetleg egy olyan "fordító programot"?

(#1054) gygabor88 válasza Elektromann (#1053) üzenetére


gygabor88
tag

Nincs most a gépemen VS, de valószínűleg az a baj, hogy csak a fájlt írtad meg, de nem szervezted project-be. File->New Project itt, amit létrehoz forrásfájlt, abba másold a saját kódod és Build.
De szerintem neked egy egyszerűbb IDE kellene először. Code::Blocks nevű progit töltsd le, és azzal tudsz kódot is szerkeszteni, meg lejön vele a fordítóprogram is.

(#1055) Elektromann


Elektromann
csendes tag

Letöltöttem a progit, de most én csinálom rosszul vagy a kód a hibás?

Kód:
#include <stdio.h>

int main(void)
{
printf("Hello world!\n");
return 0;
}

[ Szerkesztve ]

(#1056) doc válasza Elektromann (#1055) üzenetére


doc
nagyúr

te csinalod rosszul...
szerintem elsore folosleges agyonbonyolitott IDE-ket hasznalni, kezdd sima parancssoros forditoval vagy valami egyszeruvel mint a TurboC, na ami annal egyszerubb az csal :D mondjuk rettento gagyi, de elindulashoz tokeletes, aztan kereshetsz valami hozzad kozelebb allot

(#1057) gygabor88 válasza Elektromann (#1055) üzenetére


gygabor88
tag

Mi a hibaüzenet? Nálam hibátlanul fordul. Project-be tetted?

(#1058) Elektromann


Elektromann
csendes tag

Letöltöttem a Turbo C-t, de nem értem, hogyhogy kell használni, amit el tudok indítani (telepítés után) README.exe fájlt, az csak egy hosszú angol nyelvű valami, és ott csak elolvasni tudom a szöveget, utána meg kilépni lehet. El lehet egyáltalán indítani?

(#1059) Elektromann válasza gygabor88 (#1057) üzenetére


Elektromann
csendes tag

Project-ben csináltam, a Win32 GUI Project-re mentem. A Build log részen (alol) ezt írta ki:

main.cpp
Linking executable: bin\Debug\Proba.exe
LIBCMT.lib(wincrt0.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
bin\Debug\Proba.exe : fatal error LNK1120: 1 unresolved externals
Process terminated with status 1120 (0 minutes, 2 seconds)
2 errors, 0 warnings

(#1060) doc válasza Elektromann (#1059) üzenetére


doc
nagyúr

ugye sima konzolos alkalmazast valasztottal a projectnek?
a turbox meg nem a readme.exe, az, mint a neve is mutatja, csak a readme :)

(#1061) Elektromann válasza doc (#1060) üzenetére


Elektromann
csendes tag

Há azt nem tudom, hogy sima konzolos alkalmazás volt-e, mert még nem nagyon tudok angolul, németet tanultam, most már angolt tanulnék, de az angol tanár em tanít semmit, így itthon kell valahogy megtanulnom..

A Turbo C-t meg akkor keresek másikat.

(#1062) Elektromann


Elektromann
csendes tag

Letöltöttem a Turbo C-t, de nem engedi telepíteni, Framework-ot kér, de a legújabb verzió van fenn. Csak a Visual Studio-val, vagy a CodeBlock-al kell megoldani, de az a gond, hogy nem tudom, hogy hozzak létre új projectet úgy, hogy ki is tudjam próbálni.

(#1063) gygabor88 válasza Elektromann (#1062) üzenetére


gygabor88
tag

File->New->Project->Console Application
Itt megkérdezi, hogy mit hova pakoljon, meg hasonlók. Létre fog hozni egy forrásfájlt. Kitörlöd a tartalmát és beírod a kódod.

(#1064) Benmartin válasza Elektromann (#1062) üzenetére


Benmartin
senior tag

Szia!

VS-ben includeolni kell az "stdafx.h" fájlt, de kezdésnek tényleg nem ajánlott az az IDE, mint ahogy a Borland Turbo C-je sem, használj olyan IDE-t, amiben szabványos ANSI C fordító van: Dev-Cpp, ezzel egyidejűleg C++ és C kódot is tudsz fordítani, a fájl kiterjesztésétől függően.

(#1065) doc válasza Benmartin (#1064) üzenetére


doc
nagyúr

mondjuk bennem mar az elejen megfogalmazodott hogy erdemes lenne egy toksima gcc-vel kezdeni, annal egyszerubb es biztosabban mukodo nincs :)

(#1066) Elektromann válasza gygabor88 (#1063) üzenetére


Elektromann
csendes tag

Így már sikerült, kösz a segítséget. Hozzáteszem, eddig a Win32 GUI project-el próbálkoztam.

Dev C++ --> ez is fenn van, de ezzel se mentem sokra. Most, hogy gygabor88 leírta, hogy hogy kell a CodeBlock-ba csinálni (alapból berakott egy példát), az alappéldából kiderül, hogy amit a letöltött C oktatóban találtam kódot, hibás. De igaz, hogy mivel rossz menüre mentem, a korábban beírt "Hello world!" program (Wikipédiáról néztem) se működött volna.

Alap példa:
#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Hello world!\n");
return 0;
}

Oktató példa (hiányzik az "int" a "main" előtt):
#include <stdio.h>

main()
{
printf(” Első C programom \n”);
}

[ Szerkesztve ]

(#1067) sghc_toma válasza Elektromann (#1066) üzenetére


sghc_toma
senior tag

Win32 alkalmazasnal alapbol az INT WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT) a belepesi pont.. ilyened nem volt, ezert a linker nem is talalta..

in asm we trust

(#1068) kampi_


kampi_
csendes tag

Sziasztok!

Szeretnék csinálni, egy olyan programot, aminek az a lényege, hogy egy fájlból kiolvasom programok elérési útvonalait és megniytom azokat a programokat. Ha bezártam őket, akkor megnyitja megint. Odaáig eljutottam simán, hogy createprocess-el megnyitom a programokat, de hogyan tudom figyelni, hogy bezáródott-e? Tudnátok ebben segíteni?

(system függvény használata azért nem jó, mert az megvárja amíg bezáródik a megnyitott alkalmazás, és addig megáll a program. Nekem viszont pont az kellene, hogy egyszerre nyitok meg mindent, és ha akármelyik alkalmazást bezárom, akkor azt újraindítja)

Előre is köszi a segítséget!

kampi

(#1069) sghc_toma válasza kampi_ (#1068) üzenetére


sghc_toma
senior tag

Udv!
CreateProcess-rol gondolom, hogy Win32 API-val dolgozol.. ha esetleg megsem, es mashol is van CreateProcess, akkor a hsz-em tobbi resze ignoralando :)
a CreateProcess az utolso parametereben egy PROCESS_INFORMATION-re mutato pointert ker, es ebben a strukturaban tobbek kozott visszaadja a process id-t.. egy ciklusban megprobalhatsz HANDLE-t kerni a process-hez az id alapjan az OpenProcess fv-el.. ha a HANDLE == NULL, akkor mar nem fut a processz.. (nemi kis sleep-et rakjal a ciklusba, kulonban felzabalja a procit)

in asm we trust

(#1070) Lortech válasza sghc_toma (#1069) üzenetére


Lortech
addikt

Erre való a WaitForSingleObject( pi.hProcess, INFINITE );

Ahol pi a process information pointer.

Thank you to god for making me an atheist

(#1071) Lortech válasza Lortech (#1070) üzenetére


Lortech
addikt

Persze ha nem akar korrekt szálkezelést is írni hozzá, akkor marad a másik verzió.

Thank you to god for making me an atheist

(#1072) sghc_toma válasza Lortech (#1071) üzenetére


sghc_toma
senior tag

felteteleztem, hogy nem akar, kulonben megoldotta volna system()-mel..

in asm we trust

(#1073) Jester01 válasza Lortech (#1071) üzenetére


Jester01
veterán

Nem kell szálkezelés, mert van WaitForMultipleObjects is.

Jester

(#1074) kampi_ válasza sghc_toma (#1069) üzenetére


kampi_
csendes tag

Hi!

Köszönöm a sok segítséget, de ehhez én még kevés vagyok :)
Próbálkoztam a WaitForMultipleObjects , de az nem igazán jött össze. Úgyhogy maradtam a te megoldásodnál. Ami egyszerűbbnek tűnik, csak az a bajom, hogy nem tudom hogyan kell HANDLE-t kérni. Én így próbáltam:

HANDLE handle;

handle = OpenProcess(READ_CONTROL, false, proc_data[1].proc_id);

De ha itt kiiratom a handle-t akkor csak valamilyen egyre növekvő számokat kapok vissza. Tudnál ebben segíteni?

Előre is köszönöm!

kampi

(#1075) kampi_


kampi_
csendes tag

Bocs, megint én.

Azt elfelejtettem megírni, hogy ha a handle==NULL mint ahogy mondtad, akkor újra megnyitnám a bezárt process-t, de soha nem lesz NULL. :(

Köszi a segítséget.

kampi

(#1076) Black-core


Black-core
aktív tag

Sziasztok!
Bocsássatok meg biztos hogy nagyon sokan kérdezték tőletek,de nem volt erőm már végignézni a topikot,Csak egy kis segítség kéne.A programozásról tényleg semmi fogalmam nincs annyit tudok hogy több fajta nyelv van és egy pár játékot átírtam jegyzet tömbben ennyi sajna,de viszont nagyon érdekelne.Már egy pár hete olvasgatok a neten minden félét,és nem tudom hogy,hogy kezdjek neki?Amiket eddig olvastam ott 70 %ban ezt a nyelvet ajánlották.Letöltöttem egy pár könyvet is de sajna azok is kínainak tűntek így elsőre.A kérdésem az lenne hogy tudna e nekem valaki valami helyes irányt mutatni,hogy merre induljak?Mert én tényleg semmit nem tudok a programozásról.Köszi szépen és bocsi ha már sokan kérdezték! :R :R

(#1077) gygabor88 válasza Black-core (#1076) üzenetére


gygabor88
tag

Kezdetnek ezt találtam: [link]
Ez nagyjából a C alapjain végig is visz. Ha mélyebben akarsz vele foglalkozni, akkor keress rá Kernighan nevére, ő írt egy nagyon jó könyvet C-ről.

[ Szerkesztve ]

(#1078) Black-core válasza gygabor88 (#1077) üzenetére


Black-core
aktív tag

Nagyon szépen köszönöm :R Magyarul is tudnál nekem pls mutatni?Mert az angolnyelvet ennyire pro-n sajna nem értem.És köszi hogy segítesz :R

[ Szerkesztve ]

(#1079) gygabor88 válasza Black-core (#1078) üzenetére


gygabor88
tag

Magyart neten nem tudok mutatni. Esetleg valami könyvet érdemes lenne megvenni. Computerbooks-nak vannak kifejetten kezdőknek szóló könyvei. Az nem probléma, hogy nem vágod az angolt. Én 13 évesen kezdtem szintén C-vel, angolul egyáltalán nem tudtam, egy netes angol-magyar szótárral hámoztam ki a mondatok értelmét. Nagyon lassan haladtam, de olyan 100-150 szót kellett ismerni és az informatikai szövegeket jól le tudtam fordítani. Ezt azért írom le, mert mindenképp angolul fogod megtalálni a legjobb forrásokat programozáshoz a neten. Illetve sok jó könyvet le sem fordítanak magyarra, mert mire kész lenne addigra elavul a könyv tartalma.

De Kernighan könyvét pl lefordították: [link]

[ Szerkesztve ]

(#1080) Black-core válasza gygabor88 (#1079) üzenetére


Black-core
aktív tag

Köszi a segítséget! Szerencsére valamilyen szinten azért vágom az angolt úgy hogy remélem nem kell olyan sokat szótárazni egyébként nekem is ez a megoldás jutott eszembe.
És milyen programok kellenek hozzá?

(#1081) gygabor88 válasza Black-core (#1080) üzenetére


gygabor88
tag

Dev-C++ és Code::Blocks a két legegyszerűbb fejlesztői környezet. Amelyik tetszik azt válaszd.

(#1082) Benmartin válasza Elektromann (#1066) üzenetére


Benmartin
senior tag

Dev-Cpp-vel miért nem mentél sokra? Az általad beírt kódok bármelyike fordítható a Dev-Cpp compilerével.

Azért nincs a main előtt int, mert a C-ben van egy olyan szabály, hogy azok a függvények, amelyeknek nem definiálod a típusát alapból int-ek lesznek.

(#1083) Benmartin válasza gygabor88 (#1077) üzenetére


Benmartin
senior tag

Pont egy olyan tutorialt ajánlasz, amiben a main függvényt voidnak deklarálják? :)

[ Szerkesztve ]

(#1084) gygabor88 válasza Benmartin (#1083) üzenetére


gygabor88
tag

Tényleg benéztem. Csak a témakörök címét figyeltem, meg belepörgettem, hogy vannak-e példakódok.

(#1085) kampi_


kampi_
csendes tag

Sziasztok!

Az előző kérdéseimet már megoldottam, de most felmerült egy újabb. Szóval ugye egy olyan progit csinálok, ahol egy fájlban megadom a programok elérési útonalait, és a progi elindítja őket.Ha bezárom valamelyik általam megnyitott progit akkor pedig megnyitom újból. Most már minden szép és jó, viszont felmerült egy olyan probléma, hogy csa kettőt hajlandó megnyitni a program. Ez lehet a createprocess miatt? Itt a program is:

#include <windows.h>
#include <stdio.h>
#include <conio.h>

#define Buf_Size 16*1024

struct proc {
char proc_name[300];
int proc_id;
};

void file_exists(const char * filename);
void filempty(char * filename);
void createproc (char * str, int i, proc *);
int count(char * file);

struct proc proc_data[3];

int main ()
{
int i;
FILE *appfile;
char tmp[Buf_Size];
bool fute;

int current,ret,line;

current=0;
line=0;

file_exists("Application.txt");
filempty("Application.txt");
line = count("Application.txt");
//struct proc proc_data[line];

appfile = fopen("application.txt","r");

while ( fgets(tmp, sizeof tmp, appfile) != NULL )
{
createproc(tmp,current,proc_data);
current++;
}//while

fclose(appfile);

i=0;
while (1)
{
if (i==line) i=0;
current++;
Sleep(2000);
HANDLE phandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, proc_data[i].proc_id);
if (phandle==NULL) createproc(proc_data[i].proc_name,current,proc_data);
CloseHandle(phandle);
i++;
}//while

}//main

void createproc (char * str, int i,proc *proc_data)
{
STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
StartInfo.wShowWindow = SW_HIDE;
CreateProcess(NULL, str, NULL, NULL, false, 0, NULL, NULL, &StartInfo, &ProcInfo);

strcpy(proc_data[i].proc_name,str);
proc_data[i].proc_id = ProcInfo.dwProcessId;

CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
}//createproc

Ha valaki lát benne hibát legyen szíves szóljon, mert én nem találom, és fontos lenne! Vagy ha esetleg más megoldást tudtok mondani, amivel 2-nél több alkalmazást tudok megnyitni (ha esetleg a createprocess lenne a ludas) akkor jelezzétek!

Előre is köszönöm a segítséget!

kampi

(#1086) Jester01 válasza kampi_ (#1085) üzenetére


Jester01
veterán

Hát ez sajnos elég szörnyűre sikerült :(
Amivel mindenképpen baj van:
* 3 processznek van helyed statikusan, és sehol nem ellenőrzöd nem lesz-e esetleg több
* az fgets-nél nem nézed nem üres sor jött-e illetve, hogy az egész sor megvan-e
* az OpenProcess nem NULL-t fog visszaadni, hanem INVALID_HANDLE_VALUE-t.
* a CloseHandle akkor is fut, ha a handle null (invalid)
* a while(1) ciklusban a "current" változó elmegy a végtelenbe (és nem is nulláról indul)

A többi hiba ezekhez képest elhanyagolható.

Jester

(#1087) kampi_ válasza Jester01 (#1086) üzenetére


kampi_
csendes tag

Hi!

Igen egyenlőre tényleg 3 processznak van helye, mert most csak tesztelem. De ettől függetlenül is, csak kettőt nyit meg! Az fgets előtt megnézem, hogy létezik-e fájl, és hogy üres-e? Azt tény, hogy azt nem tudom hogy lehet megnézni, hogy üres-e egy sor, vagy hogy az egész megvan-e, de ha te tudod, akkor elmondhatnád :) Az OpenProcess elvileg NULL-t ad vissza. Legalábbis én azért gondolom, mert ha nem lenne NULL akkor nem teljesülne ez a feltétel : if (phandle==NULL) createproc(proc_data[i].proc_name,i,proc_data); De teljesül mert ha bezárom, akkor megnyitja megint a process-t, tehát teljesülnie kell,nem? A while(1) cilusbanpedig csak elfelejtettem átírni a current-et i-re.:( De már kijavítottam. De ettől függetlenül azt nem mondtad meg, hogy miért csak kettő process nyílik meg és nem több? :) Vagy ez lehet ezek a hibák miatt? A CloseHandle-es részt nem igazán értem hogy mire gondoltál. Sajnos ezeket a handleket meg a createprocess-t nem teljesen vágom, hogy hogyan műkődnek. Ezért is kértem segítséget :)

Kampi

(#1088) Jester01 válasza kampi_ (#1087) üzenetére


Jester01
veterán

Ok, az OpenProcess tényleg NULL-t ad vissza (de hogy miért, azt csak a microsoft tudja).
Azt, hogy miért csak kettőt indít el, így ránézésre nem tudom. Tipp 2 dolog lehet: vagy nem megy bele a while-ba háromszor vagy nem sikerül elindítani a CreateProcess-sel. Debuggold és/vagy tegyél bele kiíratást no meg hibakezelést.

Az üres sort elég egyszerű felismerni, mert a hossza nulla. A levágott sort meg az jelzi, hogy a végén nem soremelés van.

Jester

(#1089) kampi_ válasza Jester01 (#1088) üzenetére


kampi_
csendes tag

Hi!

Már rájöttem mi volt a baj! Ugye a fájl tartalma így nézett ki pl, hogy :
notepad
maspaint
notepad

És az volt a gáz, hogy ugye a sor végén volt egy "\n". Na ezért indult el scak kettő. Levágtam a soremeléseket és már jó is. Hibátlanul megy. 13 processra próbáltam ki, és megy simán. Azért köszönöm a segítséget :)

Az rendben van hogy a hossza nulla, de hogy nézem meg egy sor hosszát?
fgets(tmp, sizeof tmp, appfile) == NULL . Erre gondolsz?

És hogyan lehetne levágott egy sor? Gondolom ha nem férne bele a tmp-be,nem? De azért 16 Kb-ba már csak belefér minden :)

Köszi mégegyszer a segítséget!

kampi

(#1090) kampi_


kampi_
csendes tag

Sziasztok!

Fennti progim működik úgy ahogy kell, de felmerült egy probléma. Win 2000 esetén mindig az utolsó process ablakát teszi aktívvá. Erre tudnátok valami megoldást, hogy hogyan tudnám azt megcsinálni, hogy ne tegye mindig az utolsó processt aktívvá?

Előre is köszi a segítséget!

kampi

(#1091) sghc_toma


sghc_toma
senior tag

kampi_ (#1074): bocs, hogy nem valaszoltam, nyaraltam, es a Vodafone-os mobilnettel nem jottek be az oldalon a hsz-ek..

Jester01 (#1088): az OpenProcess doksijaban le van irva, hogy NULL-t ad vissza hiba eseten, szoval ebben nincs semmi meglepo.. ami meglepo lehetne, hogy rossz handle-t jelezhet NULL es IVALID_HANDLE_VALUE is (fuggevnye valogatja), de ezen meg azert nem lepodunk meg, mert tudjuk, mennyire konzisztens a Win32 API :) amugy azert letezik az IVALID_HANDLE_VALUE, mert egy par Win32 fv 16 bites elode -1-gyel tert vissza, es meg kellett orizni a kompatibilitast..

in asm we trust

(#1092) kampi_


kampi_
csendes tag

Sziasztok!

Megint lenne egy jó kérdésem. Hogyan tudom C-ben lekérdezni egy gép MAC címét? Van erre valami függvény, vagy nekem kell megcsinálni? Meg az is érdekelne, hogy ha van egy gép, ami ki van kapcsolva, de háló és táp rá van dugva, akkor le tudom-e kérdezni a MAC címét valahogyan?

Előre is köszi a segítséget!

kampi

(#1093) cellpeti


cellpeti
veterán

üdv,megint itt volnék.

lenne egy két kérdésem:

feladatom az,hogy egy 21x21 területen csillag karakterek felhasználásával jelenítsek meg egy keresztet a 11.sor és 11. oszlop feltöltésével, jelenítsem meg a főátlót(bal felső - jobb alsó), a mellékátló(jobb felső - bal alsó), majd egyszerre mindkettőt az az egy X-et! by Bauer Péter(SZIF) :U

Tigris, tigris, csóvafény...

(#1094) gygabor88 válasza cellpeti (#1093) üzenetére


gygabor88
tag

Kétdimenziós tömbökkel állj neki, és egy ciklusban kell majd ellenőrizni az indexeket.

[ Szerkesztve ]

(#1095) cellpeti válasza gygabor88 (#1094) üzenetére


cellpeti
veterán

oké,köszönöm...tudnám mi az a tömb és milyen ciklussal állnék neki... :O :O :U

Tigris, tigris, csóvafény...

(#1096) SLD válasza cellpeti (#1095) üzenetére


SLD
tag

Ha tudsz németül itt találhatsz néhány alap dolgot: C von A bis Z Openbook
Amúgy miért adnak olyat, amit még nem tanultál?
És ha tömbök nagyon nem mennek, akkor össze lehet hozni, for és if ciklusokkal egészen szépen.

(#1097) doc válasza SLD (#1096) üzenetére


doc
nagyúr

Bauer papa el szokta mondani oran ami kell, a ciklus meg a tomb meg a legelejen elokerul...
btw most nyariszunet van, nem? :D

(#1098) SLD válasza doc (#1097) üzenetére


SLD
tag

Hoopsz :)) Ez a meleg már az agyamra ment, úgy tűnik. De hogy mentsem magam: Nyári házi / gyakorló feladat?

(#1099) cellpeti válasza SLD (#1098) üzenetére


cellpeti
veterán

Újra kezdem a sulit és gondoltam gyakorlok,a könyv elején van ez. De nem megy sajnos. Most neki álltam a Ritchie könyvnek. Abba vannak alapfeladatok is,meg magyarázat is.

Tigris, tigris, csóvafény...

(#1100) Sk8erPeter


Sk8erPeter
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? :F 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?

Sk8erPeter

Copyright © 2000-2024 PROHARDVER Informatikai Kft.