EXAMPLES of file operations using the library <stdio.h>

Podobne dokumenty
PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

Biblioteka standardowa - operacje wejścia/wyjścia

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Pobieranie argumentów wiersza polecenia

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Operacje na plikach (niskiego poziomu) < IO.H >

Programowanie Procedurale. Pliki w języku C++

Programowanie w językach

W języku C każdy plik fizyczny jest ciągiem bajtów, z których każdy może być niezależnie odczytany. Borland 01234

Podstawowe I/O Liczby

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Podstawy programowania w języku C++

Pliki. Informacje ogólne. Obsługa plików w języku C

7 Przygotował: mgr inż. Maciej Lasota

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

INFORMATYKA Studia Niestacjonarne Elektrotechnika

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

Języki programowania. Karolina Mikulska-Rumińska Pokój 573, tel Konsultacje wtorek 9-10.

Języki i metody programowania I

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Pliki. Informacje ogólne. Obsługa plików w języku C

Programowanie w językach wysokiego poziomu

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Podstawy programowania w języku C++

Operacje wejścia/wyjścia (odsłona druga) - pliki

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF.

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Programowanie systemów informatycznych laboratorium. Ćw. 3: Akwizycja danych. RS 232 cd.

Arrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

tablica: dane_liczbowe

Ćwiczenie nr 8. Temat: Operacje na plikach - zapis i odczyt danych.

Podstawy programowania w języku C++

Wstęp do programowania 2

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Podstawy programowania w języku C++

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Strumienie i pliki. Programowanie Proceduralne 1

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

MATERIAŁY POMOCNICZE PODSTAWY PROGRAMOWANIA Na podstawie: Programowanie w C - Stworzone na Wikibooks, bibliotece wolny podręczników

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Programowanie i struktury danych

Argumenty wywołania programu, operacje na plikach

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Rev Źródło:

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Programowanie Proceduralne

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30

2018 Marcin Kukliński. Niesforne bity i bajty

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

x szereg(x)

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Struktury, unie, formatowanie, wskaźniki

Programowanie strukturalne

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Operacje wejścia/wyjścia odsłona pierwsza

Wstęp do Informatyki

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Obsługa blędów i zewnętrznych plików

część 6 biblioteka standardowa wejścia - wyjścia 1. sformatowane wejście - wyjście 2. rekordowe (binarne) wejście - wyjście

O podstawowych operacjach na tablicach. Mateusz Ziółkowski, MBiU II

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

C Operacje na plikach

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.

Podstawy programowania w Pythonie

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

2 Przygotował: mgr inż. Maciej Lasota

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Programowanie Proceduralne

r. Tablice podstawowe operacje na tablicach

Pliki. Operacje na plikach w Pascalu

Programowanie internetowe

Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip)

Języki programowania. Tablice struktur, pliki struktur. Część ósma. Autorzy Tomasz Xięski Roman Simiński

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

SQL 4 Structured Query Lenguage

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Transkrypt:

EXAMPLES of file operations using the library <stdio.h> TEXT files containing sequences of numbers: TXT- 1: Calculator - summing two numbers stored in a text file ( fopen, fscanf, fprintf, fclose ) TXT- 2: Example (TXT-1) extended with error checking file operations (opening the file, reading, writing errors) TXT- 3: Summing successive numbers loaded from text file (Iterative processing of numbers with loop while( fscanf(...)==2 )... ) TXT- 4: Iterative processing of sequence of numbers stored in file (counting the numbers, calculating the sum, the mean, the max) TXT- 5: File operations on ARRAY of numbers ( fprintf, fscanf, reading and writing elements of array) TXT- 6: Filtering copying elements matching specified criteria ( fscanf, fprintf ) TXT- 7: Removing the selected elements/numbers from the middle of the file (by copying a file into another one, skipping selected values) BINARY files composed of sequence of numbers: BIN-1: Store the sequence of numbers (from keyboard) into the file ( fwrite ) BIN-2: Read and display the content of a binary file ( fread ) BIN-3: Read the portion from inside the binary file ( fseek, fread ) BIN-4: Append some numbers at the end of the binary file ( a - append ) BIN-5: Update / overwrite the portion of binary file ( fseek, ftell, fwrite ) BIN-6: Filtering copying numbers matching the specified criteria using a loop: while( fread(...)==1 ) if(... ) fwrite(...); M. Piasecki: INTRODUCTION TO PROGRAMMING 1 (L10a) Examples of file operations

Example TXT-1: Calculator (version without error checking) Input file: data.txt 20.5 2.5 Output file: result.txt 23.00 // The program calculates the sum of two floating numbers (of type double). // Summed numbers are downloaded from existing disk file data.txt // Result of the calculation, the sum, is stored in a newly created file result.txt double a,b,sum; // read the two numbers <double> from the text file into variables <a> and <b> FILE* file; file =fopen("data.txt", "rt"); fscanf(file,"%lf %lf",&a,&b); // calculate the sum and display the result on console (write to stdout?) sum = a + b; printf( "The result: %.2f + %.2f = %.2f\n\n", a, b, sum ); // write the calculation result (the sum) into the new text file file =fopen("result.txt","wt"); fprintf(file,"%.2f",sum); printf("the result has been saved in the file \"result.txt\""); Used functions: fopen open the file, parameter "rt" means read text parameter "wt" means write text fscanf read formatted data (fields) from a text file, parameter "%lf" means: convert the number into double fprintf write formatted data to a text file, parameter "%f" means: print float or double parameter ".2" sets precision (2 numbers after decimal dot) fclose close the file M. Piasecki: INTRODUCTION TO PROGRAMMING 2 (L10a) Examples of file operations

Example TXT-2: Calculator (version with error checking ) double a,b,sum; FILE* file = fopen("data.txt", "rt"); if( file==null ) printf("error while opening the file!"); int read_count; read_count = fscanf(file,"%lf %lf",&a,&b); if( read_count!= 2 ) printf("error while reading the data!"); sum = a + b; printf("result of summation: %.2f + %.2f = %.2f\n\n", a, b, sum); file = fopen("result.txt","wt"); if( file==null ) printf("error while opening the output file!"); int write_count; write_count = fprintf(file,"%.2f",sum); if( write_count==eof ) printf("error saving the result!"); printf("the result has been saved in the file"); M. Piasecki: INTRODUCTION TO PROGRAMMING 3 (L10a) Examples of file operations

Example TXT-3: Summing successive numbers loaded from text file Input file: data.txt 1 1 2 5 5-4 -500-50 Output file: sum.txt 2 7 1-550 int a,b,suma; FILE* input_file, *sum_file; // otwarcie obu plików: odczytywanego dane.txt i zapisywanego sumy.txt input_file=fopen("data.txt", "rt"); sum_file=fopen("sum.txt", "wt"); // sprawdzenie poprawności otwarcia plików if( input_file==null sum_file==null) printf("error while opening files!"); // iteracyjne przetwarzanie kolejnych par poprawnie odczytanych liczb while( fscanf(input_file,"%d%d",&a,&b)==2 ) sum = a + b; fprintf(sum_file, "%d\n", sum); fprintf(stdout, "%d\n", sum); fprintf(stdout,"end of program"); fclose(input_file); fclose(sum_file); M. Piasecki: INTRODUCTION TO PROGRAMMING 4 (L10a) Examples of file operations

Example TXT-4: Iterative processing of sequence of numbers Input file: data.txt 7-2 1.5 5 Result: numbers on the screen Count of loaded numbers = 4 Sum = 11.500 Mean = 2.875 // Program oblicza: ilość, sumę oraz wartość średnią kolejnych liczb typu float. // odczytywanych pętlą while( fscanf(...)==1 )... // z pliku tekstowego dane.txt FILE* file; // otwarcie tekstowego pliku danych do odczytu file=fopen("data.txt", "rt"); if( file==null) printf("error opening the file!"); float number, sum=0; int count=0; // pętla iteracyjnego odczytywania i przetwarzania kolejnych liczb float while( fscanf(file,"%f",&number)==1 ) count++; sum += number; printf("%d : loaded value = %7.2f\n",count,number); // wyświetlenie wyniku przetwarzania (ilości, sumy, średniej) na ekranie if(count==0) printf("no numbers. Can not calculate the mean value"); float avg=sum/count; printf("\ncount of loaded numbers = %d \n", count); printf("sum = %.3f\n", sum); printf("mean = %.3f\n", avg); M. Piasecki: INTRODUCTION TO PROGRAMMING 5 (L10a) Examples of file operations

Example TXT-5: File operations on ARRAY of numbers // Program tworzy tablicę liczb long, losuje i wyświetla jej zawartość, // a następnie zapisuje wszystkie liczby z tej tablicy do nowego pliku tablica_liczb.txt #include <stdlib.h> const int TAB_SIZE_A = 10; long tab_a[tab_size_a]; // losowanie wartości kolejnych elementów tablicy tab_a za pomocą funkcji random for( int i=0; i< TAB_SIZE_A; i++) tab_a[i] = rand()%201-100; // kontrolne wyświetlenie wartości wszystkich liczb z tablicy tab_a na ekranie for(int i=0; i< TAB_SIZE_A; i++) printf("tab[%2d]=%4ld\n", i, tab_a[i] ); // zapis wartości elementów tablicy do pliku tekstowego FILE* file = fopen("array_of_numers.txt", "wt"); for( int i=0; i< TAB_SIZE_A; i++) fprintf(file,"%4ld\n", tab_a[i] ); // Program wczytuje liczby z pliku tekstowego do tablicy tab_b // a następnie wyświetla zawartość tablicy na ekranie const int TAB_SIZE_B = 15; long tab_b[tab_size_b]=0; // otwarcie obu plików: odczytywanego dane.txt i zapisywanego wyniki.txt printf("\nread the file and display the loaded array"); FILE* file = fopen("array_of_numbers.txt", "rt"); // iteracyjny odczyt kolejnych liczb z kontrolowaniem zakresu tablicy (co krótsze?) int read_count=0; while( read_count< TAB_SIZE_B && fscanf(file,"%ld",&tab_b[ read_count ]) ==1 ) read_count++; // kontrolne wyświetlenie zawartości tablicy tab_b po zakończeniu odczytu printf("\ncount of loaded numbers = %d\n",read_count); for(int i=0; i<read_count; i++) printf("tab[%2d]=%4ld\n", i, tab_b[i] ); M. Piasecki: INTRODUCTION TO PROGRAMMING 6 (L10a) Examples of file operations

Example TXT- 6: Filtering elements matching specified criteria Input file: numbers.txt 71 4-12 58 Output file: positive.txt 71 4 58 Output file: negative.txt -12 // Program rozdziela (kopiuje) liczby odczytywane z pliku liczby.txt // do dwóch nowo utworzonych plików dodatnie.txt oraz ujemne.txt FILE* file, *file_positive, *file_negative; // jednoczesne otwarcie trzech plików: odczytywanego i dwóch wynikowych file = fopen("numbers.txt", "rt"); file_positive = fopen("positive.txt", "wt"); file_negative = fopen("negative.txt", "wt"); // sprawdzenie poprawności otwarcia plików if( file && file_positive && file_negative ) float number; // wczytywanie kolejnych liczb z pliku wejściowego liczby.txt while( fscanf(file,"%f ",&number)==1 ) if(number>0) fprintf(file_positive,"%.8f ",number); fprintf(file_negative,"%.8f ",number); // zakończenie operacji kopiowania zamknięcie plików fclose(file_positive); fclose(file_negative); M. Piasecki: INTRODUCTION TO PROGRAMMING 7 (L10a) Examples of file operations

Example TXT-7: Removing the numbers from the middle of the file Input file: numbers.txt -2 4 7 9 15 temporary.txt Output file: numbers.txt -2 4 15 // Program usuwa z wnętrza pliku tekstowego liczby nie spełniające zadanego kryterium // ( w tym przypadku: 5 usuwana_liczba 10 ) // poprzez kopiowanie wartości liczb do nowego pliku, z pominięciem usuwanych FILE* file = fopen("numbers.txt", "rt"); FILE* temp_file = fopen("temporary.txt", "wt"); if( file && temp_file ) float number; while( fscanf(file,"%f ",&number)==1 ) if( number<5 number>10 ) fprintf(temp_file,"%.3f\n",number); // Numbers in the range [5,10] are not copied, // we can just skip them // or display on the screen, to verify the program printf("%.3f\n",number); fclose(temp_file); // physical deletion of initial file numbers.txt from the disk remove("numbers.txt"); // renaming the temporary file into numbers.txt rename("temporary.txt","numbers.txt"); M. Piasecki: INTRODUCTION TO PROGRAMMING 8 (L10a) Examples of file operations