Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Citire cu cstdio  (Citit de 1852 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
VladTiberiu
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« : Septembrie 16, 2014, 14:15:50 »

Salut, am observat ca anumite probleme necesita citire din fisier cu cstdio . De obicei folosesc fstream si as vrea sa-mi spuna cineva cum as putea scrie asta:

ifstream f("d.in");
ofstream g("d.out");
.
.
f>>n>>m;
g<<n<<m;

cu cstdio, folosind structura cu freopen

Si as dori ca sa-mi explice cineva care este diferenta dintre scrierea aceasta:

FILE *f,*g;
.
.
f=fopen("cod5.in","r");
g=fopen("cod5.out","w");
fscanf(f,"%d",&n);
..
fprintf(g,"%d",n);

si scrierea cu freopen, deoarece am vazut recent intr-un topic pe infoarena ca ar exista diferente.


Si ca sa nu mai deschid alt topic:



#include <cstdio>

using namespace std;
FILE *f,*g;
int n,i,j,a[100][100];
char x;
int main()
{
    f=fopen("cod5.in","r");
    g=fopen("cod5.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            {fscanf(f,"%c",&x);
            a[j]=x-'0';}
    for(i=1;i<=n;i++)
    {for(j=1;j<=n;j++)
            {fprintf(g,"%d",a]i][j]);fprintf(g," ");}
            fprintf(g,"\n");}
    return 0;
}

Daca am ca date de intrare
5
00000
01000
10100
01000
00000
imi afisaza:
-38 0 0 0 0
0 -38 0 1 0
0 0 -38 1 0
1 0 0 -38 0
1 0 0 0 -38
Am observat ca problema este de la  fscanf(f,"%c",&x); dar nu stiu sa corectez
« Ultima modificare: Septembrie 16, 2014, 14:55:29 de către Mihailescu Vlad » Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #1 : Septembrie 16, 2014, 15:45:53 »

S-a mai raspuns la aceasta intrebare.
Cod:
freopen("d.in", "r", stdin);
freopen("d.out", "w", stdout);
scanf("%d %d", &N, &M);
printf("%d %d", N, M);
Apelurile freopen() face ca intrarea/iesirea standard sa fie din fisier.

Legat de doua intrebare, greseala e ca citesti si caracterul '\n' (sfarsit de linie) si trebuie sa te asiguri ca sari peste el.
De exemplu fscanf(f,"%d\n",&n); la inceput si citesti un caracter in plus la sfarsitul fiecarei linii.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines