hitme Posted January 19, 2015 Report Posted January 19, 2015 aveti idee de ce nu functioneaza corect? citesc in fisier, si vreau sa afisez (intai) doar ca nu merge si nu inteleg de ce..am lasat in comentarii programul pentru citire./*Se considerã un fiºier ce conþine urmãtoarele informaþii referitoare la produsele prezentate în cadrul unui catalog: codul firmei, codul produsului, denumirea produsului ºi cantitatea produsã. Se cere: - sã se ordoneze fiºierul crescãtor dupã codul firmei, stabilindu-se apoi numãrul de produse realizate de cãtre fiecare firmã; - sã se ordoneze fiºierul crescãtor dupã codul produsului, stabilindu-se pentru fiecare produs numãrul de firme care îl realizeazã.*///Citire in fis:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{ int cod_f; int cod_p; char nume[30]; int cantitate;} FIRMA;/*int main(){ FILE *g=fopen("inf.dat","wb"); if(g == NULL) { printf("Eroare deschidere fisier"); exit(EXIT_FAILURE); } int i,n; FIRMA x; printf("Cate structuri? "); scanf("%d",&n); fflush(stdin); for(i=1;i<=n;i++) { printf("Cod firma [%d] : ",i); scanf("%d",&x.cod_f); printf("Cod produs [%d] : ",i); scanf("%d",&x.cod_p); fflush(stdin); printf("Cantitate [%d] : ",i); scanf("%d",&x.cantitate); printf("Nume [%d] : ",i); scanf("%s",x.nume); fflush(stdin); fwrite(&x,sizeof(FIRMA),1,g); } fclose(g); return 0;}*/int main(){ FILE *f=fopen("inf.dat","rt"); if(f==NULL) { printf("Eroare fis"); exit(1); } FIRMA x; int i,n; fseek(f,0L,2); n=ftell(f)/sizeof(FIRMA); fseek(f,0L,0); printf("Cod firma | Cod produs | Denumire produs | Canitate produs \n"); for(i=1;i<=n;i++) { fread(&x,sizeof(FIRMA),1,f); printf("%d %d %d %s \n",x.cod_f,x.cod_p,x.cantitate,x.nume); } fclose(f); return 0;} Quote
Active Members MrGrj Posted January 19, 2015 Active Members Report Posted January 19, 2015 Deci tu vrei mai intai sa scrii in fisierul ala datele de acolo ? ( cod firma, cod produs, bla bla ).Uite aici o idee:FILE *f = fopen("file.txt", "w");if (f == NULL){ printf("Eroare !\n"); exit(1);}/* printam ceva text */const char *text = "Scriem asta in txt";fprintf(f, "Text: %s\n", text);/* Integer si floats */int i = 1;float py = 3.1415927;fprintf(f, "Integer: %d, float: %f\n", i, py);/* print caractere simple */char c = 'A';fprintf(f, "A character: %c\n", c);fclose(f);Cum citesti din fisier ? Am gasit o problema p-aici. Nu am timp sa iti scriu.11) Se presupune un fi?ier text ("vocale.txt") ce con?ine o in?iruire de caractere. S? se contorizeze apari?ia fiec?rei vocale în fi?ier.#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<limits.h>void main(){ char c; int a=0,e=0,i=0,o=0,u=0; //a=nr. de aparitii a vocalei "a", s.a.m.d. FILE *stream; /*declarare stream (flux de date)*/ stream = fopen("D:\\vocale.txt ", "r"); /*deschidere fisier*/ if(stream == NULL) { printf ("Eroare"); getch(); exit(1); } while(!feof(stream)) //atata timp cat nu e sf de fisier { fscanf(stream,"%c",&c); //sau c=getc(f); sau c=fgetc(f); switch(c) { case 'a': a++; break; case 'e': e++; break; case 'i': i++; break; case 'o': o++; break; case 'u': u++; }; } fclose(stream); printf("Vocala \"a\" aparare de %d ori.\n",a); printf("Vocala \"e\" aparare de %d ori.\n",e); printf("Vocala \"i\" aparare de %d ori.\n",i); printf("Vocala \"o\" aparare de %d ori.\n",o); printf("Vocala \"u\" aparare de %d ori.\n",u); getchar();}Mai citeste despre fisiere. Quote
hitme Posted January 19, 2015 Author Report Posted January 19, 2015 salut, am inteles perfect ce ai exemplificat, dar asta este pentru fisiere text.. ce am eu (binar) intai scriu in el, si apoi am de ordonat pe acolo, doar ca atunci cand iau datele din binar si le pun in structura, le pune aiurea, poti incerca o compilare.. Quote
Active Members MrGrj Posted January 19, 2015 Active Members Report Posted January 19, 2015 Nu am timp sa il compilez acum. Asteapta pana diseara sau pana raspund baietii:Arunca un ochi si peste asta pana atunci. Quote
hitme Posted January 19, 2015 Author Report Posted January 19, 2015 am gasit problema, am deschis fisierul ca "rt" nu ca "rb" ... multumesc oricum Quote