Kezdőoldal » Számítástechnika » Programozás » Miért nem megy?

Miért nem megy?

Figyelt kérdés

Na ez van Írj programot, amely parancssori agrumentumok segítségével két a programoddal azonos könyvtárban lévő szöveges fájl nevét, valamint egy sztringet kap meg. Az első argumentumban megadott fájlban az angol abc betűit tartalmazó szavak vannak egymás alatt. A második argumentumban megadott fájl üres. A programod másolja át az első argumnetumban megadott fájlból azokat a szavakat a második argumentumban megadott fájlba, amelyek tartalmazzák a harmadik argumentumként megkapott sztringet.


A szavakat tartalmazó fájlban minden sorban egy szó szerepel. Nem fordulhat elő olyan, hogy csak egy újsor karakter van megadva egy sorban. A program elindításánál azt feltételezzük, hogy a felhasználó megadja mind a három argumentumot, amelyek létező fájlok nevei, és a sztring is minimum 1 karakter hosszú. Tehát nem kell olyan kivételt kezelni, hogy valamelyik argumentum hiányzik. Na itt a program de sehogy sem jó #include<stdio.h>

#include<stdlib.h>

#include<string.h>


int kereso(char *s1, char *s2);

char tolower(char x);


int my_strlen(char *s);


int main(int argc, char *argv[])

{FILE *f,*f2;

char szo[0];

f=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

if(argc<=3) printf("A programnak 3 bemenet kell!\n");

return -1;


while(!feof(f))

{

fscanf(f,"%s\n",szo);

if(kereso(szo,argv[3]))

{fprintf(f2,"%s\n",szo);

printf("%s\n",szo);

}

fclose(f);

fclose(f2);

system("PAUSE");

return 0;

}


int my_strlen(char *s)

{

int szamlalo=0;

while(s[szamlalo]!='\0')

{szamlalo++;}

return szamlalo;

}

char tolower(char x)

{ int i;

for(i=0;i<26;i++)

{if(x==(65+i)) return (65+i)+32;}

return x;

}


int kereso(char*s1, char*s2)

{

int hossz1,hossz2,b,k;

b=0;

hossz1=my_strlen(s1);

hossz2=my_strlen(s2);

if(hossz2>hossz1) return 0;



for(k=0;k<hossz1-(hossz2-1);++k)

{ if(tolower(s1[k])==tolower(s2[0])){

b++;

while(b)

{if(b==hossz2)

return 1;

if(tolower(s1[k+b])==tolower(s2[k]))

b++;

else{b=0; break;

}

}

}

}

system("PAUSE");

return 0;

}


}

A gond az hogy nem azt csinálja amit kellene neki :S ,s már szerintetek mit rontottam el???


2012. ápr. 24. 19:08
 1/9 iostream ***** válasza:

char szo[0];


Ez a sor már durva. Nem írt rá warningot a fordító?

2012. ápr. 24. 21:04
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
nem néha kiírt olyanokat hogy undefined reference to blablabla,de ha az int felcserélgettem a függvényeket akkor ez a gond megszűnt.Most elvileg lefut, csak nem azt teszi amit kellene neki
2012. ápr. 24. 21:56
 3/9 A kérdező kommentje:
*de ha felcserélgettem a függvényeket
2012. ápr. 24. 21:57
 4/9 A kérdező kommentje:
itt írtam el szóval az ott char szo[30];
2012. ápr. 24. 21:59
 5/9 anonim ***** válasza:
Én tényleg nem akarlak piszkálni, de ez Prog.hu..
2012. ápr. 25. 02:03
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

Ha egyáltalán while(!feof(f)) ciklushoz érne a vezérlés akkor is max 1x fut le mert a cikluson belül feltétel nélkül benne van a return 0;

Az int kereso(char*s1, char*s2)-n belül nem értem minek a system("PAUSE"); A tolower az is rettenetes módon van megírva, mellesleg a fordító "sikít" hogy már van ilyen nevű beépített függvény. Ami egyébként ugyanezt a célt szolgálja.

"if(argc<=3) printf("A programnak 3 bemenet kell!\n");

return -1; " itt a return -1 egyébként -1-et nem is szoktak visszaadni main-ből +1-et inkább. Ez már kapásból megakadályozza hogy egyáltalán elinduljon a keresés.


Leellenőrzöd hogy van e 3 paraméter a feladat azt kéri hogy nem kell, ha már ellenőrzöd akkor ezt még a fájlok megnyitása előtt illene.

Abba nem mélyedtem bele hogy a kereso fgv egyáltalán mennyire jó.

2012. ápr. 25. 10:35
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
utolsónak ...köszi
2012. ápr. 25. 14:09
 8/9 A kérdező kommentje:
átírtam...most ezt írja a fordító in function kereso undefined reference to my_strlen exit status . Na most mivan ...:(?
2012. ápr. 25. 14:16
 9/9 anonim ***** válasza:
Nem jól írtad át. Érvénytelen hivatkozást használsz a hibaüzenet alapján. Látatlanba nem tudok konkrétabbat.
2012. ápr. 25. 14:53
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!