Text files
This presentation is the property of its rightful owner.
Sponsored Links
1 / 9

Text files PowerPoint PPT Presentation


  • 100 Views
  • Uploaded on
  • Presentation posted in: General

Text files. Text file contains ASCII-characters New line and end-of-file are special characters in a text file Ex. 1 This is a text<newline>It has two lines<newline><end-of-file> Examples of predifined text files stdin, stdout, stderr (these are file pointers)

Download Presentation

Text files

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Text files

Text files

  • Text file contains ASCII-characters

  • New line and end-of-file are special characters in a text file

    Ex. 1

  • This is a text<newline>It has two lines<newline><end-of-file>

  • Examples of predifined text files

    stdin, stdout, stderr (these are file pointers)

  • stderr always associated with the screen

  • stdin, stdout might be re-directed to other text files

TDBA66, vt-04, Lecture Ch9


Text files

EOF

EOF is defined in <stdio.h> and is returned from scanf() or fscanf() if end-of-file of the read file is detected

Possible to check if EOF is read by

e.g.

for (status=scanf(”%d”, &num); status != EOF; status=scanf(”%d”, &num))

process(num);

e.g.

while (fscanf(infpt,”%d”, &num) != EOF)

process(num);

TDBA66, vt-04, Lecture Ch9


Text files

  • Declare file pointers

  • Open a file for reading or writing

  • -check if opening was ok

  • Use it/them

  • Close them before ending program

  • Ex. 1

  • FILE *inf, *outf;

  • if ((inf=fopen(”filname1.txt”,”r”)) == NULL){

  • fprintf(stderr,”Error when opening filname1.txt”);

  • exit(-1);

  • }

  • if ((outf=fopen(”filname2.txt”,”w”))== NULL){

  • fprintf(stderr,”Error when opening filname2.txt”);

  • exit(-2);

  • }

Using text files

TDBA66, vt-04, Lecture Ch9


Text files

/* Makes a backup file. Repeatedly prompts for the name of a file to

* back up until a name is provided that corresponds to an available

* file. Then it prompts for the name of the backup file and creates

* the file copy.

*/

#include <stdio.h>

#define STRSIZ 80

intmain(void){

char in_name[STRSIZ], /* strings giving names */

out_name[STRSIZ];/* of input and backup files*/

FILE *inp, /* file pointers for input and*/

*outp; /* backup files*/

char ch; /* one character of input file*/

int status; /* status of input operation*/

/* Get the name of the file to back up and open the file for input*/

printf("Enter name of file you want to back up> ");

for (scanf("%s", in_name);

(inp = fopen(in_name, "r")) == NULL;

scanf("%s", in_name)) {

printf("Cannot open %s for input\n", in_name);

printf("Re-enter file name> ");

}

TDBA66, vt-04, Lecture Ch9


Text files

/*Get name to use for backup file and open file for output */

printf("Enter name for backup copy> ");

for (scanf("%s", out_name);

(outp = fopen(out_name, "w")) == NULL;

scanf("%s", out_name)) {

printf("Cannot open %s for output\n", out_name);

printf("Re-enter file name> ");

}

/* Make backup copy one character at a time*/

for (status = fscanf(inp, "%c", &ch);

status != EOF;

status = fscanf(inp, "%c", &ch))

fprintf(outp, "%c", ch);

/* Close files and notify user of backup completion*/

fclose(inp);

fclose(outp);

printf("Copied %s to %s.\n", in_name, out_name);

return(0);

}

TDBA66, vt-04, Lecture Ch9


Binary files

Binary files

  • Binary files can not be created by an editor (as with text files)

  • A binary file is created by writing on it from a C-program

  • If a human should not read the file it saves time and memory to use binary files

  • The internal representation in bits ia written to a binary file

  • Contents of databases are typically binary

TDBA66, vt-04, Lecture Ch9


Example

Example

Figure 10.3 (extended) Creating a Binary File of Integers and read them into a vector of integers

FILE *binaryp, *inbinp;

int i, list[255];

binaryp = fopen("nums.bin", "wb");

for (i = 2; i <= 500; i += 2)

fwrite(&i, sizeof (int), 1, binaryp);

fclose(binaryp);

/* read 250 integers into a vector */

inbinp = fopen(”nums.bin”,”rb”);

fread(list, sizeof(int), 250, inbinp);

fclose(inbinp);

…………

…………

TDBA66, vt-04, Lecture Ch9


Figure 10 4 outline and function main for metals database inquiry program

Figure 10.4 Outline and Function main for Metals Database Inquiry Program

/* * Displays all metals in the database that satisfy the search * parameters specified by the program user. */

#include <stdio.h>#include <string.h>#define MAX_DENSITY 20.0 /*maximum density (g/cm^3)*/#define MAX_MELT_PT 4000 /*maximum melting point(deg.C)*/#define MAX_TENS_MOD 350 /*maximum tensile modulus(GPa)*/#define MAX_DAYS 90 /* maximum days to delivery */#define STR_SIZ 80 /* number of characters in string*/typedef struct { /* metal structure type */ char name[STR_SIZ]; double density; /* g/cm^3 */ int melt_pt, /* melting point in degrees C */ tens_mod, /* tensile modulus in GPa */ days_to_deliv; /* days from order to delivery */} metal_t;typedef struct { /* search parameter bounds type */ char low_name[STR_SIZ], high_name[STR_SIZ]; double low_density, high_density; int low_melt_pt, high_melt_pt, low_tens_mod, high_tens_mod, low_days, high_days;} search_params_t;

TDBA66, vt-04, Lecture Ch9


Fig 10 4 cont

Fig. 10.4 cont.

/* Insert prototypes of other functions needed.*/

/*

* Prompts the user to enter the search parameters.

*/

search_params_t get_params(void);

/*

* Displays records of all metals in the inventory that satisfy search parameters.

*/

void display_match(FILE *databasep, /* input - file pointer

to binary database file*/

search_params_t params);/* input - search parameter bounds*/

int main(void){

char inv_filename[STR_SIZ]; /*name of inventory file */

FILE *inventoryp; /* inventory file pointer*/

search_params_t params; /* search parameter bounds */

/* Get name of inventory file and open it*/

printf("Enter name of inventory file> ");

scanf("%s", inv_filename); fflush(stdin);

inventoryp = fopen(inv_filename, "rb");

/* Get the search parameters */

params = get_params();

/*Display all metals that satisfy the search parameters */

display_match(inventoryp, params);

return(0);

}

TDBA66, vt-04, Lecture Ch9


  • Login