//============================================================== // Obsluga plikow - In / Out
// binarny zapis tablicy liczb;
// mode pracy "r+" - "korekta" danych w pliku; // zastepowanie czesci danych innymi wartosciami // wykorzystanie funkcji fseek(...)
//
// ver data temat autor // 100 2004/09/11 Pierwszy projekt J. Malinowski // 101 2007/11/08 Cleanup JM // 102 2019/12/07 Uzuelnione opisy JM //============================================================== #include <stdio.h>
#include <conio.h>
void Display_Array(char name[]);
//============================================================== #pragma argsused
int main(int argc, char *argv[]) {
// deklaracja i inicjowanie tablicy liczb; double A[5] = {1.1, 2.2, 3.3, 4.4, 5.5}; double B[5];
printf("Nazwa pliku do zapisu: "); char name[30];
scanf("%s", name);
// zapis binarny tablicy liczb: FILE *fp;
fp = fopen( name, "wb" );
fwrite( &A, sizeof(double), 5, fp ); fclose( fp ); Display_Array(name); // wymiana liczby: fp = fopen( name, "r+" ); double x; int nr;
printf("ktora do wymiany? jej kolejny numer: ");
scanf("%d", &nr); //UWAGA! nr poza zakresem? printf("nowa wartosc: ");
scanf("%lf", &x);
// fseek( fp, 0, SEEK_SET );
fseek( fp, (nr-1)*sizeof(double), SEEK_SET ); fwrite( &x, sizeof(double), 1, fp );
fclose( fp );
Display_Array(name);
printf("\npress any key\n"); getch();
return 0; }
//============================================================== void Display_Array(char name[])
{
double X[5];
FILE* fp = fopen( name, "rb" );
while( fread(&X, sizeof(double), 5, fp) ) { for(int i=0; i<5; i++) {
printf("%10.3lf", X[i]); } printf("\n"); } fclose( fp ); } //==============================================================