Poslao: 21 Okt 2010 21:52
|
offline
- clzola
- Građanin
- Pridružio: 10 Mar 2009
- Poruke: 101
- Gde živiš: Podgorica
|
Uspio sam da napisem kod da procita citav fajl, e sad mene treba ta jedna linija.
Kako sam ja shvatio, fgets() cita jednu liniju, a ako stavim while(!feof(pFile)) on cita liniju po liniju sve do kraja... E sad razmisljao sam kako ja mogu da iscitam jednu linju koju ja zelim.. Unesem jedan broj, e sad stavim line=1 (broj linije) i i=3 na primer...
Kada program prodje kroz petlju while, stavim da samo ako su line i i jednaki da ispise tu liniju, znaci nesto ovako
#include <stdio.h>
main()
{
FILE *pFile;
char liner[81];
int i, line=1;
//Open file
pFile = fopen("doc.txt", "r");
if(pFile != NULL)
{
scanf("%d", &i);
while(!feof(pFile))
{
if(i == line)
{
fgets(liner, 81, pFile);
printf("%s", liner);
}
line++;
}
}
getch();
}
Ali ne radi bas najbolje, ispise samo prvu liniju txt fajla, i stane, kao da zablokira ... :/
Help
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
Poslao: 21 Okt 2010 22:38
|
offline
- clzola
- Građanin
- Pridružio: 10 Mar 2009
- Poruke: 101
- Gde živiš: Podgorica
|
Sad u opste ne ispise ni prvu liniju.
Je li iz while petlje?
|
|
|
|
Poslao: 21 Okt 2010 22:41
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
#include <stdio.h>
main()
{
FILE *pFile;
char liner[81];
int i, line=1;
//Open file
pFile = fopen("doc.txt", "r");
if(pFile != NULL)
{
scanf("%d", &i);
while(!feof(pFile))
{
fgets(liner, 81, pFile);
if(i == line)
printf("%s", liner);
}
line++;
}
getch();
}
|
|
|
|
Poslao: 21 Okt 2010 22:53
|
offline
- clzola
- Građanin
- Pridružio: 10 Mar 2009
- Poruke: 101
- Gde živiš: Podgorica
|
probao sam da stavim line++ unutar petlje a ovo koliko vidim fgets() si ti izvukao i sad radi evo koda
#include <stdio.h>
main()
{
FILE *pFile;
char liner[81];
int i, line=1;
//Open file
pFile = fopen("doc.txt", "r");
if(pFile != NULL)
{
scanf("%d", &i);
while(!feof(pFile))
{
fgets(liner, 81, pFile);
if(i == line)
printf("%s", liner);
line++;
}
}
getch();
}
|
|
|
|
|
Poslao: 21 Okt 2010 23:22
|
offline
- clzola
- Građanin
- Pridružio: 10 Mar 2009
- Poruke: 101
- Gde živiš: Podgorica
|
Sad je iskrso novi problem
Za sad napravio sam program koji uzme jednu liniju koju ja izaberem iz fajla pitanja.txt a iz fajla odgovori.txt uzme liniju i memorise je negde u memoriji u stringu koji sam nazvao mem[81]. Sve normalno, pitanje 1 glasi, Glavi grad Crne Gore? to je iz pitanja.txt a ovamo u odgovori.txt se nalazi u liniji 2 (posto nece da cita prvu liniju, to nibetni rijesio sam taj problem) 'Podgorica' i on sve normalno to pokupi iz fajlova, e sad dolazim do sledeceg.
Zelim da ukucam odgovor i da taj odgovor uporedi sa ovim iz odgovori.txt a taj odgovor je smjesten u stringu mem[81]. Kad ih uporedim na sledeci nacin k=strcmp(odgovor,mem), Koliko sam shvatio on uporedjuje karakter po karakter i ako su svi karakteri isti, on mene treba da vrati rezultat k=0, a on mi vrati -1 ili 1, nikako nulu xD
Kod:
#include <stdio.h>
#include <string.h>
main()
{
FILE *pFile;
FILE *oFile;
char liner[81], odgovor[81], mem[81];
int i, line=1, k=1;
//Open file
pFile = fopen("pitanja.txt", "r");
if(pFile != NULL)
{
scanf("%d", &i);
while(!feof(pFile))
{
fgets(liner, 81, pFile);
if(i == line)
{
printf("%s", liner);
}
line++;
}
}
else
{
printf("File does not exist.");
getch();
}
fclose ( pFile );
printf("\n\n Broj linija: %d", line-1);
line=1;
oFile = fopen("odgovori.txt", "r");
if(oFile != NULL)
{
while(!feof(oFile))
{
fgets(liner, 81, oFile);
if(i == line)
{
fgets(mem, 81, oFile);
}
line++;
}
}
printf("\n\n Uneste odgovor:");
getchar();
gets (odgovor);
printf("\n\n vas odgovor %s", odgovor); // Ovjde ispisuje ono sto se unosi kao odgovor
printf("\n fgets %s", mem); // Ovdje ispisuje ono sto je izvukao iz odgovori.txt
k=strcmp(odgovor,mem);
if(k == 0)
printf("\nTacno");
else
printf("\nNetacno");
printf("\nk = %d", k);
getch();
}
]
|
|
|
|
Poslao: 21 Okt 2010 23:34
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
if(oFile != NULL)
{
while(!feof(oFile))
{
fgets(liner, 81, oFile);
if(i == line)
{
fgets(mem, 81, oFile);
}
line++;
}
}
Dva puta fgets - ti si presao vec na sledece pitanje i sledeci odgovor, a ne na onaj koji si zeleo.
|
|
|
|
Poslao: 21 Okt 2010 23:40
|
offline
- clzola
- Građanin
- Pridružio: 10 Mar 2009
- Poruke: 101
- Gde živiš: Podgorica
|
Stavio sam tu strcpy(mem, liner), znaci iz stringa liner da kopira u string mem, i kasnije stavim output da mi pise sto sam ja unio (pise tacno ono sto sam unio) i output sta je program uzeo iz odgovori.txt
Moj unijeti odgovor i odgovor koji je uzet iz fajla su identicni a on mi pise da je Netacno i da je k= -1 ili 1a trebalo bi da dobijem da je k=0 ako je identicno i onda ce prema if(k==0) printf("Tacno"); da mi kaze da je rezultat tacan, ako se imalo razlikuje ispisace da je rezultat netacan (else printf("Netacno");
|
|
|
|