Kezdőlap › Fórumok › Programozás › C programozás
- This topic has 351 hozzászólás, 49 résztvevő, and was last updated 15 years, 6 months telt el by
valaki456.
-
SzerzőBejegyzés
-
2006-03-28-17:32 #2016256
Helló,
egy problémám van egy egyszerû kis c programmal. A program a következõ:
Code:#include
#include
#include#define KEZDETI 50
#define ADD 10int prim(int num, int * primek,int * index) {
//prímszámok tárolására szolgáló tömb
int n,k,f; // ciklusváltozók
int size; //eddig lefoglalt memória mérte a primek tömb számárasize = sizeof(int) * KEZDETI;
primek = malloc(size);if (primek == NULL) { printf(„Nem tudtam elég memóriát folalni.n”);return -1;}
primek[0] = 2;
primek[1] = 3;
*index = 2;
f = 0;for(n = 5; n < num;n = n+2) { for(k = 1; k < (*index); ++k) { if(!(n % primek[k] > 0)) {
//a mar nem lehet prím
f = 1;
break;
}
}if(f == 0)
{
if(size >= ((*index) – 1)) {
size = size + sizeof(int) * ADD;
primek = realloc(primek,size);
}
primek[(*index)++] = n;}else{ f = 0;}
}
}
int main() {int * primek = NULL;
int index = 0;
prim(781, primek, &index);return 0;
}MIndebben a lényeg anyi hogy van a prim függvény ami az int * primek argumentumán kapott tömbbe beírja a int num argumentumként átadott számig az összes prímet és a tömb hosszát elhelyezi a int * index argumentumba.
Ez mind szép és jó a probléma ott van hogy mielött befejezõdik a prim függvény a tömb megfelelõen van kitöltve (debugerrel megnéztem) de miután visszakerül a vezérlés a main-ba már nem a megfelelõ értékeket tartalmazza a tömb.
Miért van ez? Az lehet a probléma hogy a prim()-be folalom a szügséges memóriaterületet nem a main()-ba? Vagy valami egyéb?
Elõre is köszi a segítséget
2006-03-28-18:39 #2016257Megtaláltam a megoldást. Az volt a probléma hogy a realloc()-tól visszakapott primek már nem az volt amit eredetile átadott main().
2006-03-31-19:43 #2016258Sziasztok ismét azért fordulok hozzátok mert egy kis problémám támadt.
Egy progit írok ami a tar-t használja segédprogramként, vagyis a program mûködés közben elindítja a tar-t.
A tarnak nincsen más feladata mint megadott arhívum tartalmának kilistázása. Ugyebár odáig minde rendben hogy fork() és execvp(). A probléma ott kezdõdik hogy a tar a kimenetet a terminalra fogja írni.
2006-03-31-19:49 #2016259FILE *pipe;
pipe=popen(„tar …”, „r”);
…
innentöl fileként kezeli.
Nem biztos, hogy menni fog, de a Pere László féle Programozás C nyelven c. könyvben ilyesmi van:D2006-03-31-19:54 #2016260Code:FILE *pipe;
pipe=popen(„tar …”, „r”);
…
innentöl fileként kezeli.
Nem biztos, hogy menni fog, de a Pere László féle Programozás C nyelven c. könyvben ilyesmi van:DHanyadik oldal? hirtelen nem találom
2006-03-31-19:58 #2016261Amúgy én az mknode() ra gondoltam a pipe létrehozásánál eredetileg.
2006-03-31-20:02 #2016262180. oldal.
2006-03-31-20:06 #2016263113. oldalon van a getline() ezzel lehet olvasni ha jól értem.
2006-03-31-20:11 #2016264Nekem ez jól megy:
Code:#include
#include
#include
int main(){
FILE *pipem;
char sor[256];
pipem=popen(„ls -al”, „r”);
if(pipem==NULL){
printf(„nem ment”);
}
while(fgets(sor, 255, pipem)){
printf(„%s”, sor);
}
return 1;
}2006-03-31-20:15 #2016265oké köszi akkor én is megpróbálom
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz