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");
|
|
|
|