Új hozzászólás Aktív témák
-
plaschil
aktív tag
Ami a // után van, az ki van kommentezve. Még egy kérdés mik a lényegesebb különbségek a struct és az union között?
-
plaschil
aktív tag
Segítsetek légyszi ha tudtok!
Olyan progit kell írnom ami összehasonlítja két fájl tartalmát. vagy két adott fájlt, vagy egy adottat és egy begépeltet. na a két adott fájl rész már lefut. szépen ki is írja hogy hol nem egyezik a két fájl. de a második része nem jó valamiért. begépelem a szöveget, el kéne elvileg mentenie egy txt-be, és utána összehasonlítania egy másik adott txt-vel. de mikor entert ütök, hogy jelezzem befejeztem a fájl írását, nem tudom elkezdi -e összehasonlítani, mert segmentation fault (core dumped)-del kilép.itt a második része a proginak.case 2:
printf("Gepelje be a szoveget, majd usson egy entert!\n");
f2=fopen("haha.txt","w+");
scanf("%s",&f);
fprintf(f2,"%s",f);b=1000;
for(a=0;a<b;a++)
//while((e=getchar())!=EOF)
{c=getc(f1);
d=getc(f2);if(c!=d)
{
//printf("%c", c);
//printf("%c ", d);
break;
a++;
}}
//a++;
if(a!=b)
{
fprintf(stderr, "\n A ket szoveg ettől a karaktertol nem egyezik: %d", a);
getchar();
}
if(a=b)
{
getchar();}
fclose(f1);
fclose(f2);break;
break;
}
} -
plaschil
aktív tag
Sziasztok!
Van egy progim, és az a kikötés hogy az STDERR-re kéne kiíratni a hibaüzeneteket. (Nem STDIO-ra.) Hogy kell ezt megcsinálni? -
sghc_toma
senior tag
OK, kösz mindkettőtöknek.
-
sghc_toma
senior tag
számunkra fura dolgot találtunk tegnap programozás közben.. a kódban maradt egy olyan sor, hogy zárójelben egy pár érték, valahogy így: (4, "sdfg", 23).. A kód lefordult, a progi működött.. megnéztem objdump-pal ennek a két forrásnak megfelelő progit:
int main() {(1,2,3,4); printf("qwer"); return 0;}
, illetve
int main() {printf("qwer"); return 0;}
semmi különbség nincs az assembly kódok közt...
a kérdésem: ez mitől "érvényes" kód c-ben, c++-ban? -
Tv
senior tag
Hát igen a linux képes ilyen csodákra
. Nekem is csak úgy beugrott, mikor mondtad a sorvéges dolgot, hogy van valami $ jeles dolog is
. Mondom kipróbálom nincs mit veszteni, erre jó is lett egyből, minden működik ahogy kell. Az volt a gáz, hogy xp alatt írtam a progit, ment is jól, aztán ftp-n feltöltöttem linux-ra, és ott putty-on át akartam volna fordítani, futtatni.
-
doc
nagyúr
$ jellel? na ilyet sem hallottam még
alapvetően az a probléma, hogy a sorvéget alapvetően háromféleképpen szokás kezelni
Linux alatt a sorvégeket a \n zárja le (10-es karakter)
OSX alatt ha jól tudom a \r (13-as)
DOS alatt meg valami elmebeteg okból kifolyólag mindkettő egyszerre (\r\n), de ezt a dos/windows-os C programok egy karakterre fordítják
viszont mikor Linux alatt olvasod be a file-t, azt látja hogy a sor legutolsó karaktere egy \r, majd utána jön csak a sorvége -
Tv
senior tag
De szerintem is az! Vagy amikor a fájlból olvasom be a sorokat, majd megfordítom őket, valamit másképp csinál a linux, mint a win?
Ezt a sorvéges dolgot nem vágom. Win alatt mikor beolvasok egy sort, akkor a végét a C \n-ként kezeli. Linux alatt ez hogy van?
Mert ott hibázik a progi, ahol a beolvasott és megfordított sorokat hasonlítja össze a másik megfordított sztringgel
-
Tv
senior tag
Szaszok! Már megint gond van
minygyárt megőrülök. A progit megírtam, működik is rendesen windóz alatt, de linux-on az istennek se akar. Vetnétek rá egy pillantást lécci? Fontos lenne
. Köszi előre is. A gond valahol a sztringek összehasonlításánál lehet.
#include <stdio.h>
#include <stdlib.h>
#include<string.h>int maxsorh(FILE *f2)
{
int x=0;
int y=0;
char str[1024];if ((f2=fopen("text2.txt","r"))== NULL)
{printf("Nem letezik a text2.txt allomany!\n");
exit(-1);}
else
while (fgets(str,1024,f2))
{
printf("%s",str);
x=strlen(str);if(x>y)
{
y=x;
x=0;
}}
printf("A text2.txt fajl leghosszabb soranak hossza: %d\n",y);
}
void rev(char* s){
int i, j= strlen(s)-2;
char temp;
for (i=0; i < j; i++, j--)
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
main()
{FILE *f1;
FILE *f2;
char buff[1024];
int i=0;
char szo[]="alma\n";
rev(szo);
if ((f1=fopen("text1.txt","r"))== NULL)
{printf("Nem letezik a text1.txt allomany!\n");
exit(-1);}
else
{while (fgets(buff,1024,f1))
{
printf("%s",buff);
rev(buff);
printf("%s",buff);if (strncmp(buff,szo,4) ==0 )
{
f2 = fopen("text2.txt", "a");
rev(buff);
fprintf(f2,"%s",buff);
fclose(f2);
}}
printf("\n");
fclose(f1);}
maxsorh(f2);
} -
Tv
senior tag
Nah sikerült megcsinálni a nagy részét a feladatnak, már csak azt nem tudom, hogy hogyan kellene megcsinálni, hogy mindegyik sornak a végét hasonlítsa össze egy előre megadott sztringgel. Tehát ha az előre megadott sztring pl. az, hogy "alma" , akkor azt nézze, hogy a sor az alma szóval zárul-e vagy sem. Erre esetleg van ötlete valakinek?
-
Tv
senior tag
Szevasztok! Volna egy olyan gondom, hogy nemtudom hogy C-ben egy szöveges fájlból soronként beolvasni. Tehát az szeretném, hogy beolvasom a fájlt soronként és minden soban megvizsgálom, hogy benne van-e egy adott szó, és ha igen, akkor az adott sorf kiírom egy másik fájlba. Eddig annyira jutottam, hogy a fájlkezelés része kész van. De ez így csak a egy szónál működik(pl. "alma"), (még nem kinlódtam a kereséses résszel). A legfontosabb a soronkénti sztringe olvasás volna, a többi részét szerintem meg tudom oldani majd.
#include <stdio.h>
#include <stdlib.h>main()
{FILE *f1;
char buff[1024];
int i=0;
if ((f1=fopen("text1.txt","r"))== NULL)
{printf("Nem letezik a text1.txt allomany!\n");
exit(-1);}
else
{while (fgets(buff,1024,f1))
{printf("%s",buff);
}
fclose(f1);
}if (strcmp(buff, "alma") == 0)
{
FILE *f2;
f2 = fopen("text2.txt", "w");
fprintf(f2, "%s",buff);}
}Köszi előre is.
-
ceginner
csendes tag
Köszönöm Szépen Zoli!
Meg fogom nézni hamarosan, sokat segítettél ezzel!
-
ceginner
csendes tag
Minden segítség jól jöhet! Lehet, hogy pont találok benne valami olyat, ami sokat segít.
Már vagy 7 verziót írtam, 5-öt töltöttem fel eddig, de 0 pontot kaptam rá. Annál csak jobb lehet. Akkor légyszi küldd már el... -
PazsitZ
addikt
-
ceginner
csendes tag
Sziasztok Sorstársak!
Elakadtam a 2. kötprogival és egy kis segítség kellene. Konkrétan a LÁDAPAKOLÁS lenne a téma. Konkrétabban: Egy gyárban egy nap csak azonos súlyú termékeket gyártanak és ezeket ládába pakolják, egy ládában max. 100 kg lehet. Egy nap max. 1000 db-ot készítenek egy-egy S súlyú termékből... Azt hogy melyik ládába pakoljunk a legkisebb négyzetek módszerével kellene megkeresni, de sehogy sem sön ki az adott kimenet.
Mit ronthattam el?
Bemenetben az első szám a napok száma, a második két szám pedig db és súly.
Már nem ez az első verzió, de már tisztára belezavarodtam. Nem tudom hogyan kellene megírni jól az algoritmust, hogy 100 db fölötti adatokra is jól működjön.Pl.: Bemenet:
1
347 6Kimenet:
0000010000010000010000010
0000100000100000000000100
0001000001000001000002000
0020000030000040000060000Az első sor első eleme, az egy kilós ládák száma - és így tovább egyészen százig...
Az általam írt kód:
#include <stdio.h>
#define M 1000
#define N 100
int Sulyok[M+1]={0};
int Darabok[N+1]={0};
int darab(int suly)
{
int j,s;
int r=1;
s = suly;
for(j=0;j<N;j++)
if (Sulyok[j] == s) r+= 1; //else r=N-1;
return r;
}
void pakol(int db,int s)
{
int K=0,a=0;
int i=0,j=0,k=1,l=0;
int opt=0;
int szumma=1000;
int NAGYSZAM = 10000;
int ossz;
int suly;
ossz = db*s;
suly = s;
Sulyok[0] = s; //az első elemet betesszük
while(i <db){
if ((s == 1) && (suly%100 != 0)) {Darabok[99] = db/10; Darabok[0] = 0;/*Darabok[100-Sulyok[k-1]]-=1;*/}
if (Sulyok[k-1] <= 100)
{
if (suly != 1) Sulyok[k] += suly;
// k+=1;
szumma = darab(Sulyok[k-1]+s)*darab(Sulyok[k-1]+s); //gyakorisag az uj suly berakasa utan
if (szumma <= NAGYSZAM)
{opt += 1;
NAGYSZAM = szumma;
k=i;
if(opt >= 1)
for(l=0;l<=k;l++)
{
if(Sulyok[l] > K) {K=Sulyok[l]; k=l;}
}
} else k+=1; //ha ezek a feltetelek nem teljesulnek uj lada kell
/ if (Sulyok[k] == (100-Sulyok[k])) {Darabok[100] += 1;}
Darabok[Sulyok[k]-1] += 1;
}
i += 1;
}
}
void kiir2(){
int i=0,j,k,l,m;
FILE* ki;
ki=fopen("ki.txt","w");
while(i<4){
for (j=0;j<N/4;j++){
if (i>0) k = (i*25)+j;
fprintf(ki,"%d ", Darabok[((i*25)+j)]); }
i+=1; fputc('\n',ki);}
fclose(ki);
}
int main()
{
int i;
int nap,suly,db;
FILE* in;
in=fopen("be.txt","r");
fscanf(in,"%d",&nap);
if (nap >=1 && nap<=10)
for (i=0;i<nap;i++){ fscanf(in,"%d %d",&db,&suly);
if (db >= 1 && db <= 1000)
if (suly >=1 && suly <=100) {
//feldolgozhatjuk az adatokat
pakol(db,suly);
}
}
kiir2();
fclose(in);
return 0;
}Minden segítséget és hozzászólást előre is köszönök!
-
Dead_slow
tag
válasz
[HUN]Zolee #155 üzenetére
Ok, úgy lesz. Örülök hogy segíthettél
-
doc
nagyúr
válasz
darnellsmith #170 üzenetére
most lettél leb@szva
ott a prog.hu, ott direkt van házikészítős topic... -
darnellsmith
senior tag
válasz
darnellsmith #168 üzenetére
sürgős lenne, pls HELP
-
Lortech
addikt
Házikkal legyetek szivesek máshova fáradni, ez nem az "itt a házim csináld má' meg" topik!
Ha elkezditek, látni valamit, hogy próbáljátok megoldani, biztos lesz segítség is. -
darnellsmith
senior tag
1. Ellenőrzötten bekér egy pozitiv egész számot. A számnak 100 és 200 közé kell esnie. Az elfogadott értéket nevezzük n-nek.
2. Ezután n darab pozitiv háromjegyű egész számot kell végtelenszámgenerátorral előállítania és közben képernyőre 4 pozicios mezőszélességgel kiiratnia.
3.a végén jelenitse meg hogy a generált számok közül hány darab volt páros és hány darab volt páratlan.
vki segitsen pls -
rOwLeY
őstag
Emberek, lenne vki estleg vmi fejében vállalna nekem beadandó házi megírást?!BME villany első félév!
-
Orb1337
tag
Halihó!
Valaki megtudná csinálni ezt a progit nekem:
Készítsen programot, amely szavakat kér be pont végjelig, s ezekből a szavakból összeállít egy mondatot úgy, hogy az egy külön stringként legyen letárolva. Ezután számolja meg a mondatban található kisbetűs rövid magánhangzókat.
A felévi jegyem múlik rajta. -
Jester01
veterán
válasz
[HUN]Zolee #161 üzenetére
Hát mert az elemeket nem foglaltad le egyáltalán.
-
[HUN]Zolee
őstag
Megint rakoncátlankodik az progim. Valamiert az ertekadásnál az i=0 , j=1 után hibával elszáll mintha nem lenne több memóriacím lefoglalva.
struct mezo{
int szin;
struct babuk *babu;
};
struct mezo*** init(int sor){
int i,j;
struct mezo ***t;
t=(struct mezo***)malloc(sor*sizeof(struct mezo**));
for (i=0;i<sor;i++) {
t[i]=(struct mezo**)malloc(sor*sizeof(struct mezo*));
}
for (i=0;i<sor;i++){
for (j=0;j<sor;j++) {
t[i][j]->szin=0;
t[i][j]->babu=NULL;
printf("i: %d j: %d\n",i,j);
}
};
return t;
}nem értem miért csinálja ezt velem.
-
-
.DLL
veterán
Előzmény (C++ topic):
DLL:
Üdv! Levelezőn kezdtem C-t tanulni és egy olyan kérdésem lenne hogy milyen függvénnyel lehet karaktert tesztelni, hogy az szám-e vagy betű-e (pl. ahova számot kér a progi ne lehessen kiakasztani betű beírásával.
getch(); esetén elvileg az ASCII kódtábla alapján lehet szűrni hogy csak a 0x30 és 0x39 közötti karaktereket (amik elvileg 0-9-ig a számok) engedje bevinni, de ha scanf( );-el kérek be adatot akkor hogyan lehet ezt megoldani?
Előre is köszönöm a segítséget!Jester01:
%[0-9]
De ez C nem C++
--------------------------------------------------------
Nos, ezt elvileg így gondoltad scanf("%[0-9]",&a); ? mert így elég fura dolgokat tesz az a-ba:int a;
main()
{
clrscr();
printf("szám beírása:");
scanf("%[0-9]",&a);
printf("eredmény: %d",a);
getch();
}bármilyen számot írok be egész más lesz belőle.
Bocs a noobságért tényleg nemrég kezdtem, és nincs is az hogy bemegyek hétfőn és megkérdezem a tanárt..
-
_Kewr_
csendes tag
Ha valaki tudna nekem mondani egy jó leírást az ncurses használatáról, azt megköszöném.
-
sekli
addikt
Helo,
Keresgeltem google-lal, de nem sikerult megtalalnom a nagy ekezetes betuk HEX ASCII kodjat....,
http://www.idevelopment.info/data/Programming/ascii_table/PROGRAMMING_ascii_table.shtml
ebben amik bennevannak a DevC++ -ban nem jok...
pl a kis 'é'-nek a kodja a DevC++-ban 0x82, ebben a listaban meg nem az van...ha valaki tudja, hogy hol vannak a jok, az ne tartsa magaban...
-
Dead_slow
tag
válasz
[HUN]Zolee #149 üzenetére
HE-HE.
Én is ugyanazt a feladatot kaptam beadandónak, nagyon sokat segítettél -
Jester01
veterán
válasz
[HUN]Zolee #149 üzenetére
Semmit, kicsi a k amivel hívod. 3 lépés kevés, próbáld hattal vagy többel.
-
[HUN]Zolee
őstag
Köszi mindkettőtöknek.
Kaptam egy feladatot amit nem tudok helyesen beírni, mindig hibás eredmény jön ki.
A feladat: n-edik gyök(x) et kell kiszámolni a következő iterációval :
( y(i+1) = (n-1)*y(i) + x / y(i)^(n-1) )/nitt tartok most :
include <stdio.h>
#include <math.h>
#include <malloc.h>
double fgv(int i){
double x=8;
const int n=3;
double k;
if (i<=1) return x;
k=((n-1)*fgv(i-1)+x/pow(fgv(i-1),n-1))/n;
printf("%d %lf\n",i,k);
return k;
}
int main(){
int k=3;
double p;
p=fgv(k);
printf("\n\n%lf",p);
return 0;
}mit baltáztam el?
-
PazsitZ
addikt
válasz
[HUN]Zolee #146 üzenetére
(*U_mutato).nev
Az U_mutato-t a precedencia (elsőbbségi) szabály miatt kell zárójelbe tenni, mert ha nem tennénk a fordító azt hihetné, hogy ez egy U_mutato.nev változóra mutató pointer.
Mivel a C régi változatainak idejében elég gyakran volt szükség struktúra-mutatók használatára és kényelmetlen, zavaró volt minden egyes alkalommal zárójelezni, ezért kitaláltak egy új operátort, ez a -> (nyíl; egy mínusz jelből és egy ’nagyobb’ relációs jelből tevődik össze). Ennek használatával már nem kell zárójeleznünk:
U_mutato->nev
-
amargo
addikt
válasz
[HUN]Zolee #146 üzenetére
cahar *p;
(*p).valami;
helyett elég a
p->valami; -
[HUN]Zolee
őstag
valaki meg tudná mondani nekem hogy a -> operátor mire jó pontosan?
-
Tv
senior tag
Sziasztok! Egy kis segítségre volna szükségem C-ben. Egy olyan progit kellene írnom, ami bekér egy egész számot, majd egy ciklus kiíratja úgy, hogy első sorban annyiszor amennyi a szám, a másodikban egyel kevesebbszer stb. Valamint mindegyik szám mellé odarak egy betű karaktert. Tehát ha a számnak 5-öt adok meg akkor ezt adja:
5A5A5A5A5A
5A5A5A5A
5A5A5A
5A5A
5A
A progit meg is írtam már:
#include<stdio.h>int main(void)
{
int x;
char y=65;
int i,j;printf("Kerek egy szamot: ");
scanf("%d", &x);for(j=0; j<x; j++)
{
for(i=0+j; i<x; i++)
{
printf("%d%c", x, y);}
printf("\n");
}
}
A gond az lenne, hogy ezt függ vényként kéne működtetni. Eddig ennyire jutottam, de valamiér végtelenül írja ki a cuccokat:
#include<stdio.h>void kiirat(int a, char b)
{int i,j;
for(j=0; j<a; j++)
{
for(i=0+j; i<a; i++)
{
printf("%d%c", a, b);}
printf("\n");
}
}int main(void)
{
int x;
char y=65;printf("Kerek adjon meg egy egsz szamot: ");
scanf("%d", x);kiirat(x,y);
}
Ha valakinek van őtlete segítsen légyszi. Köszi előre is -
Nunder
őstag
válasz
kicsitomi88 #141 üzenetére
köszi a linket! és itt tudok találni valakit aki segít vagy csak írjam be hogy kötprogforráskód kéne???
-
kicsitomi88
őstag
-
Nunder
őstag
ha nem vagy az se baj mert nekem télleg nagy szükségem volna mindennemű segítségre! télleg szokott itt olyasvalaki fórumozni aki szegedi? azokkal is szívesen felevenném a kapcsolatot
-
Nunder
őstag
válasz
kicsitomi88 #138 üzenetére
csak nem te is SZTE-s vagy?? mert az nem volna rossz
-
Nunder
őstag
Szevasztok! Az egyetemen (SZTE) most fogok írni köt.progból dogát. 10 programból egyet kell megírni az órán de parázok mert marha nehezek! Nincsenek túl nagy programozási háttérismereteim de szerintem ilyen guruknak nem lenne nehéz egyik sem!.Ha esetleg valakinek volna kedve és ideje velem foglalkozni az írjon és megbeszéljük.
-
stepboy
csendes tag
Sziasztok; az elmúlt napokban akadt egy kis problémám, és [ezen] az oldalon találtam rá megoldást. Ha gondoljátok, akkor rakjátok be a többi link közé, hátha másnak is hasznos lehet.
-
Jester01
veterán
válasz
[HUN]Zolee #132 üzenetére
t.c: In function ‘test’:
t.c:40: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘int *’
t.c:41: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘int *’Valamint a foglalás valóban rossz, ha már egyszer int-eket akarsz tárolni, akkor azoknak foglalj helyet, illetve ügyelj a pointerekre!
Diff:
--- t.c.orig 2007-11-20 16:48:48.000000000 +0100
+++ t.c 2007-11-20 16:59:32.000000000 +0100
@@ -8,24 +8,24 @@
int i,j;
- (*t)=(int***)malloc(sor*sizeof(char));
+ (*t)=(int***)malloc(sor*sizeof(int**));
for (i=0;i<sor;i++) {
- (*t)[i]=(int**)malloc(sor*sizeof(char));
+ (*t)[i]=(int**)malloc(sor*sizeof(int*));
}
for(i=0;i<sor;i++){
for (j=0;j<sor;j++){
printf("i:%d j:%d\n",i,j);
- (*t)[i][j]=(int*)malloc(2*sizeof(char));
+ (*t)[i][j]=(int*)malloc(2*sizeof(int));
}
}
for (i=0;i<sor;i++){
for (j=0;j<sor;j++) {
- t[i][j][0]=0;
- t[i][j][1]=0;
+ (*t)[i][j][0]=0;
+ (*t)[i][j][1]=0;
}
}
@@ -37,8 +37,8 @@
for (i=0;i<sor;i++) {
for (j=0;j<sor;j++) {
- printf("%d",t[i][j][0]);
- printf("%d",t[i][j][1]);
+ printf("%d",(*t)[i][j][0]);
+ printf("%d",(*t)[i][j][1]);
}
printf("\n");
} -
[HUN]Zolee
őstag
válasz
[HUN]Zolee #132 üzenetére
Ha valakit érdekel a hiba ez volt :
t[i][j][0]=0
helyett
(*t)[i][j][0]=0
kell
-
[HUN]Zolee
őstag
üdv. Valaki fussa át ezt a pár sort valami nem ok a lefoglalással vagy nemtom mivel, mert felöltésnél elszall.
#include <stdio.h>
#include <malloc.h>
const N=8;
void init(int ****t,int sor){
int i,j;
(*t)=(int***)malloc(sor*sizeof(char));
for (i=0;i<sor;i++) {
(*t)[i]=(int**)malloc(sor*sizeof(char));
}
for(i=0;i<sor;i++){
for (j=0;j<sor;j++){
printf("i:%d j:%d\n",i,j);
(*t)[i][j]=(int*)malloc(2*sizeof(char));
}
}
for (i=0;i<sor;i++){
for (j=0;j<sor;j++) {
t[i][j][0]=0;
t[i][j][1]=0;
}
}
if (i==8) printf("vegeztem");
}
void test(int ****t,int sor){
int i,j;
for (i=0;i<sor;i++) {
for (j=0;j<sor;j++) {
printf("%d",t[i][j][0]);
printf("%d",t[i][j][1]);
}
printf("\n");
}
}
int main() {
int*** tabla;
init(&tabla,N);
test(&tabla,N);
scanf("");
return 0;
} -
_Kewr_
csendes tag
Nagyon szépen köszönöm a segítséget!
-
_Kewr_
csendes tag
Most már semmi hibaüzenet, csak ennyi:
kewr@kewr-desktop:~$ ./filenev
kewr@kewr-desktop:~$ -
Lortech
addikt
A .c-n mit akarsz futtatni? Az a forráskódod (elvileg
). Azért írja ki, hogy hozzáférés megtagadva, mert nincs beállítva rá az x attribútum (futtatható). //de még egyszer mondom, egyébként sincs értelme futtatni, mert nem futtatható állomány, csak a forráskód.
"gcc filenev -o filenev.c -lncurses" még véletlenül sem jó, mert nem a filenev nevűt kéne fordítanod, hanem a filenev.c nevű forráskódodat a filenev nevű binárisba, azaz
gcc filenev.c -o filenev -lncurses, még egyszer: ahol filenev.c a forráskódod, filenev pedig az a fájlnév, amiben a lefordított programod szeretnéd látni.
Ezután futtatás ./filenev-vel.
Ha még így is hibaüzenet a válasz, akkor a hibaüzenetet másold be, mert anélkül nem tudok segíteni. -
_Kewr_
csendes tag
Az a gond, hogy hogy azt írja,hogy bash: ./filenev.c: Hozzáférés megtagadva. Ha pedig azt írom, hogy gcc filenev -o filenec.c -lncurses, akkor egy elég jelentős terjedelmű hibaüzenetet, amit nem tudok 100%-osan értelmezni.
-
Lortech
addikt
Minek utaztatod meg a stringeket?
Hiszen csak a char*-okra mutató pointereket kell kicserélni ahhoz, hogy **matrixban kialakuljon a helyes a sorrend:if (strcmp(matrix[i], matrix[j]) < 0)
{
char *sp = matrix[i];
matrix[i] = matrix[j];
matrix[j] = sp;
}De ha mégis úgy kéne, akkor pl :
#include <stdio.h>
#include <string.h>void rendez(char **matrix)
{
int i, j;
char ideiglenes[20]="";for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if (strcmp(matrix[i], matrix[j]) < 0)
{
strcpy(ideiglenes, matrix[i]);char *segedp;
segedp = (char *)realloc(matrix[i], strlen(matrix[j]) + 1);
matrix[i] = segedp;
strcpy(matrix[i], matrix[j]);segedp = (char *)realloc(matrix[j], strlen(ideiglenes) + 1);
matrix[j] = segedp;
strcpy(matrix[j], ideiglenes);
}
}
printf("\nRendezve: \n\n");
for(i = 0; i < 10; i++)
printf("%s\n",matrix[i]);}
int main(void)
{char *automarkak[10];
automarkak[0]=(char *)malloc(strlen("Mercedes") + 1);strcpy(automarkak[0], "Mercedes");
automarkak[1]=(char *)malloc(strlen("Ferrari") + 1);strcpy(automarkak[1], "Ferrari");
automarkak[2]=(char *)malloc(strlen("Audi") + 1);strcpy(automarkak[2], "Audi");
automarkak[3]=(char *)malloc(strlen("Lada") + 1);strcpy(automarkak[3], "Lada");
automarkak[4]=(char *)malloc(strlen("Chevrolet") + 1);strcpy(automarkak[4], "Chevrolet");
automarkak[5]=(char *)malloc(strlen("Ford") + 1);strcpy(automarkak[5], "Ford");
automarkak[6]=(char *)malloc(strlen("Ferrari") + 1);strcpy(automarkak[6], "Skoda");
automarkak[7]=(char *)malloc(strlen("Suzuki") + 1);strcpy(automarkak[7], "Suzuki");
automarkak[8]=(char *)malloc(strlen("Opel") + 1);strcpy(automarkak[8], "Opel");
automarkak[9]=(char *)malloc(strlen("Chrysler") + 1);strcpy(automarkak[9], "Chrysler");rendez(automarkak);
} -
_Kewr_
csendes tag
Köszönöm az eddigi segítséget, már csak egy kérdésem van. Milyen parancsal tudom futattni? Mert nem történik semmi amikor bepötyögöm a ./filenev-et.
-
Steve-S
tag
Nah megvan, márcsak azt mondja meg valaki hogy miért fagy ki ez a program egyből miután elindítom? Fordításnál semmi hiba, függvény is elvileg jó! Akkor mi lehet a gond?
#include <stdio.h>
#include <string.h>void rendez(char **matrix)
{
int i, j;
char ideiglenes[20];for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if (strcmp(matrix[i], matrix[j]) < 0)
{
strcpy(ideiglenes, matrix[i]);
strcpy(matrix[i], matrix[j]);
strcpy(matrix[j], ideiglenes);
}
}
printf("\nRendezve: \n\n");
for(i = 0; i < 10; i++)
printf("%s\n",matrix[i]);}
int main(void)
{char *automarkak[10];
automarkak[0]="Mercedes";
automarkak[1]="Ferrari";
automarkak[2]="Audi";
automarkak[3]="Lada";
automarkak[4]="Chevrolet";
automarkak[5]="Ford";
automarkak[6]="Skoda";
automarkak[7]="Suzuki";
automarkak[8]="Opel";
automarkak[9]="Chrysler";rendez(automarkak);
} -
Steve-S
tag
Hi mindenkinek! Újabb kérdésem lenne. Egy olyan függvényt kell írnom ami egy előreinicializált mátrixot(ékezet nélküli szavakkal töltöm fel), névsor szerint rendez. Az algoritmus meg a lényeg megvan, de úgy kell csinálni hogy a fgv paramétere char ** típusú legyen. Na most ezt kellene nekem elmagyarázni hogy ez a dupla csillagos modszer hogy működik, pl. hogy hogy töltöm fel így a mátrixot ha ilyen típussal kell, mert ez sem sikerült még. Lehet kicsit láma kérés de nem igazán vágom. Ha valaki elmagyarázná jó lenne.
Köszi!
-
Tv
senior tag
Köszönöm a válaszokat mindenkinek! Mostmár kezdem érteni a dolgot
-
dabadab
titán
A main() az definicio szerint int-et ad vissza, ez eppen olyan resze a C specifikacionak, mint az, hogy az utasitasok vegere pontosvesszo kell.
Tortenelmileg onnan ered a dolog, hogy UNIX-on (de egyebkent ez jelenleg is igy van gyak. minden OS-nel, amivel talalkozhatsz) a programoknak van egy u.n. visszateresi erteke, ami egy egyszeru integer. Ennek GUI-s, interaktiv programoknal tul sok szerepe nincs, viszont olyan esetekben, amikor pl. scriptbol hiv meg az ember programokat, nagyon hasznos: ugyanis ezt szokas annak jelzesere hasznalni, hogy a program jol futott-e le v tortent vmi hiba. A konvencio az, hogy ha nincs gond, akkor a visszateresi ertek 0, ha pedig van, akkor nem nulla (a konkret ertekek es jelenteseik program-specifikusak mar).
Egyszeruen osszefoglalva: ha a programod szepen lefut, akkor egy "return 0" kell, ha meg vmi hiba miatt szakad meg a futasa, akkor meg -1 (ezt szoktak altalanos "problema van" ertekkent hasznalni) legyen a main() altal visszaadott ertek.
-
amargo
addikt
Most vagy én vagyok macisajt vagy.. a többiek nem értettek meg.
Tv ha jól értem az nem világos számodra, mi a fenéért kell a main nak int visszatérési típus, nos én azzal az egyszerű dologgal tudnám magyarázni, hogy bármikor megtud szakítani a futását a programodna.
szerk:
Amint látom doc írta, csak a végén -
doc
nagyúr
visszatérési érték minden programnál van, a main típusa int
de ha nem akarsz visszatérési értéket használni, akkor nem használod
ilyenkor ha jól tudom, sima 0-val tér vissza
ha mást akarsz, akkor teszel bele pl. egy return 3; sort, ott a program futása megszakad és a shell amiből indítottad egy 3-as értéket kap -
Tv
senior tag
válasz
kicsitomi88 #113 üzenetére
Ismét köszönöm, de még azt mindig nem tudom, hogy mikor milyen visszatérési értéket kell választani. Eddig ami programokat írtam mindig int main(void)-ot használtam, tehát int-el tér vissza. Milyen proginál van például, hogy nincs visszatérési érték? Ha nem akarok pl. kiíratni semmi eredményt? Tehát a progi csinálja a dolgát, de az eredményt nem kérem ki? Sorry, ha nagyon értetlen vagyok
-
Tv
senior tag
válasz
kicsitomi88 #111 üzenetére
Köszi a választ, de én azt nemértem hogy mit is jelent maga a main fv. visszatérési értéke. Eddig mindenki azt mondta hogy használjak int main(void)-ot például és kész. Megmagyarázni eddig senki nem tudta, hogy miért ezt vagy miért azt válasszam. Szóval a kíváncsiság hajt, hogy mi a különbség, ha pl. int a mainfv. visszatérési értéke, vagy ha nem adok neki (void).
-
Tv
senior tag
Szeva mindenki! Egy alapvető dologgal nem vagyok tisztában. Ez pedig a main függvény visszatérési értéke. Én minden proginál "int main(void)"-ot használok, de vannak akik "main()"-t, stb. használnak. Mikor melyiket érdemes, illetve egyáltalán mi a különbség köztük?
-
_Kewr_
csendes tag
És ha nem használok semmit, akkor mit írjak be, ha pl valami.c-t szeretném lefordítani?
-
_Kewr_
csendes tag
Most épp Anjuta-t használok.
-
_Kewr_
csendes tag
Eléggé kezdő vagyok, úgyhogy elnézést az értetlenségem miatt, de ezt elmondanád mégegyszer?
-
_Kewr_
csendes tag
Köszönöm a segítséget. De Most ujabb gondom adódott, egy egyszerűbb kódra, konkrétan erre:
#include <ncurses.h>int main () {
initscr ();
printw ("Hello Vilag !!!");
refresh ();
endwin ();
return 0;
}Ezt a hibaüzenetet kapom:
valami.c
.text+0x12): undefined reference to `initscr'
valami.c.text+0x1e): undefined reference to `printw'
valami.c.text+0x23): undefined reference to `stdscr'
valami.c.text+0x2b): undefined reference to `wrefresh'
valami.c.text+0x30): undefined reference to `endwin'
collect2: ld returned 1 exit status -
doc
nagyúr
válasz
kicsitomi88 #100 üzenetére
korábban van a baj, már az ncurses.h-t sem találja, szerintem nincs felrakva az ncurses csomag
sudo apt-get install ncurses ncurses-dev(vagy curses és curses-dev, most Slackware előtt ülök
)
Ú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!
- Huawei P20 Lite 64GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! Lenovo ThinkPad X250 - i5-5GEN I 8GB I 128GB SSD I 12,5" HD I Cam I W10 I Garancia!
- 100.000 ft -tól Országosan a legjobb BANKMENTES részletfizetési konstrukció! ASUS ROG Strix G18
- REFURBISHED és ÚJ - HP USB-C/A Universal Dock G2 docking station (5TW13AA) (DisplayLink)
- LG 42C4 - 42" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged