Salt la conținut

SUBIECTE NOI
« 1 / 5 »
RSS
Telefonul Oppo a74 mi-a blocat ca...

A inviat Mudava

Import china alibaba

Facultate
 Vouchere de vacanta

Cand One United nu mai vand isi v...

Mandolina feliat legume

Atestat consilier de siguranta
 alarma auto Autowatch 346 RLI

Ce se intampla cu actualii tineri...

Descifrare reteta

Zapp fix
 Rulment pt diferential 4motion

Lipire filtru la baterie ikea

Meserias nu mai vine sa termine l...

Soferii prinsi bauti sau drogati ...
 

[Tema] Citire sir de caractere din fisier

- - - - -
  • Vă rugăm să vă autentificați pentru a răspunde
13 răspunsuri în acest subiect

#1
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016
Salutare!
Deci,am un fisier text cu propozitii dispuse pe linii diferite, insa nu este mentionat un N numar de propozitii. Fiecare rand este format dintr-un sir de caractere,cu numar nedefinit de elemente.
De exemplu:
   siruri.txt
Mama_Are_Mere
Maine_este_o_noua_zi
Acasa am gasit mancarea facuta

Intrebarea mea este: Cum as putea citi din fisierul siruri.txt fiecare rand in parte, astfel incat sa pot aplica pentru fiecare propozitie de pe fiecare linie aceeasi secventa de instructiuni si sa nu-mi aplice secventa doar pentru prima propozitie.

Editat de -PTM-Andrey, 25 martie 2017 - 15:15.


#2
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Mesaje: 40.633
  • Înscris: 30.07.2003
http://www.cplusplus...e/cstdio/fgets/

#3
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016
Din acest cod:
#include <stdio.h>
int main()
{
   FILE * pFile;
   char mystring [100];
   pFile = fopen ("myfile.txt" , "r");
   if (pFile == NULL) perror ("Error opening file");
   else {
	 if ( fgets (mystring , 100 , pFile) != NULL )
	   puts (mystring);
	 fclose (pFile);
   }
   return 0;
}


pFile = fopen ("myfile.txt" , "r");
...ce semnifica asta?

#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Mesaje: 40.633
  • Înscris: 30.07.2003
Ai documentata functia aici: http://www.cplusplus...e/cstdio/fopen/

#5
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016
Am incercat acel cod pe fisierul meu " in.txt " :
Mama_Are_Mere
Maine_este_o_noua_zi


insa in consola aparea:
"Mama_Are_Mere
<Spatiu>"


Codul este neschimbat, decat in loc de "myfile.txt" am pus "in.txt".. De ce?

#6
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Mesaje: 40.633
  • Înscris: 30.07.2003
Acel cod nu-ti rezolva problema in totalitate. Doar iti arata cum sa folosesti o functie care citeste o linie din fisierul tau. Tu foloseste un while() sa citesti pana la final de fisier (vezi feof()).

#7
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Mesaje: 27.268
  • Înscris: 10.08.2006

View Post-PTM-Andrey, on 25 martie 2017 - 15:14, said:

Salutare!
Deci,am un fisier text cu propozitii dispuse pe linii diferite, insa nu este mentionat un N numar de propozitii. Fiecare rand este format dintr-un sir de caractere,cu numar nedefinit de elemente.
De exemplu:
   siruri.txt
Mama_Are_Mere
Maine_este_o_noua_zi
Acasa am gasit mancarea facuta

Intrebarea mea este: Cum as putea citi din fisierul siruri.txt fiecare rand in parte, astfel incat sa pot aplica pentru fiecare propozitie de pe fiecare linie aceeasi secventa de instructiuni si sa nu-mi aplice secventa doar pentru prima propozitie.
Presupun că vei dori și să aloci memorie în heap și să o folosești, din moment ce nu știi lungimea maximă a propozițiilor.

Adică: trebuie să știi să lucrezi cu pointeri.

#8
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016
Ma descurc, zic eu... Problema ar fi cum as putea opera cu pointeri in acel fisier?

#9
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Mesaje: 40.633
  • Înscris: 30.07.2003
Ia si pitroceste un pic exemplul din link: http://www.cplusplus...ce/cstdio/FILE/

#10
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016
Rezolvat.

#include <iostream>
#include <fstream>

using namespace std;

ifstream f("date.txt");

int main()
{
int n, i=0,j=0;
char p[100][100];
while(!f.eof())
{
	 f>>p[j++];
}
f.close();
for(i=0; i<j; i++)
{
	 cout<<p[i]<<endl;
}
return 0;
}


Multumesc!

Editat de -PTM-Andrey, 26 martie 2017 - 08:16.


#11
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Mesaje: 3.681
  • Înscris: 29.08.2013

View Post-PTM-Andrey, on 26 martie 2017 - 08:16, said:

while(!f.eof())
{
	 f >> p[j++];
}


Şi dacă propoziţia are spaţii?

#12
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016
.. Imi desparte propozitia cu spatii .......


Edit:

ifstream f("in.txt");

int main()
{
	   char s[100];
	   while(f.get(s,100)){
				f.get();
	   cout<<s<<'\n';
	   }
}


Asa imi ia cu si fara spatii...

Editat de -PTM-Andrey, 26 martie 2017 - 13:00.


#13
sags

sags

    Guru Member

  • Grup: Senior Members
  • Mesaje: 10.026
  • Înscris: 24.04.2013
Si daca o linie e mai lunga de 100 (sau, mai precis, 99) de caractere?

Hint: fgets() citeste pana la sfarsitul liniei dar nu mai mult decat indica al 2-lea parametru; daca a ajuns la sfarsit de linie pune si '\n' in buffer, altfel nu pune. Sau citeste despre cum istream::getline() seteaza failbit. Atentie si la cazul in care ultima linie din fisier nu are end-of-line la sfarsit.

#14
lightpoint

lightpoint

    Member

  • Grup: Members
  • Mesaje: 785
  • Înscris: 16.02.2017

View Post-PTM-Andrey, on 25 martie 2017 - 15:31, said:

pFile = fopen ("myfile.txt" , "r");
...ce semnifica asta?
Ca trebuie intai sa inveti ce sunt pointerii, aritmetica lor si apoi la alte chestii mai avansate.

Editat de lightpoint, 27 martie 2017 - 10:17.


Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

Utilizatori activi: 1

0 membri, 1 vizitatori, 0 utilizatori anonimi

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate