Presentation is loading. Please wait.

Presentation is loading. Please wait.

Files Working with Files in C ATS 315. Files Misunderstandings about “files” In Windows and on Macs, we tend to think of files as “containing something”.

Similar presentations


Presentation on theme: "Files Working with Files in C ATS 315. Files Misunderstandings about “files” In Windows and on Macs, we tend to think of files as “containing something”."— Presentation transcript:

1 Files Working with Files in C ATS 315

2 Files Misunderstandings about “files” In Windows and on Macs, we tend to think of files as “containing something”. But that’s a bad metaphor.

3 Files Single “file” All lined up, working with them in order.

4 Files Single “file” Files are single files of ones and zeros (a.k.a. “bits”). 10001101

5 Files Single “file” Usually work with eight bits at a time (a.k.a. “byte”) There are 256 possible bytes. 10001101

6 Files ASCII A code that converts each of the 256 possible bytes into a symbol. 01011101 “A” 01101110 “B” 11101001 “newline” 11100101 “+”

7 Files A typical file 010010101001110010111101011010101010101001101010 101010101010101011011010010101010100100101001010 101010101010101010010101001110010111101011010101 010101001101010101010101010101011011010010101010 1001001010010101010101010101010…

8 Files A typical file 010010101001110010111101011010101010101001101010 101010101010101011011010010101010100100101001010 101010101010101010010101001110010111101011010101 010101001101010101010101010101011011010010101010 1001001010010101010101010101010…

9 Files A typical file 010010101001110010111101011010101010101001101010 101010101010101011011010010101010100100101001010 101010101010101010010101001110010111101011010101 010101001101010101010101010101011011010010101010 1001001010010101010101010101010… #

10 Files A typical file 010010101001110010111101011010101010101001101010 101010101010101011011010010101010100100101001010 101010101010101010010101001110010111101011010101 010101001101010101010101010101011011010010101010 1001001010010101010101010101010… #i

11 Files A typical file 010010101001110010111101011010101010101001101010 101010101010101011011010010101010100100101001010 101010101010101010010101001110010111101011010101 010101001101010101010101010101011011010010101010 1001001010010101010101010101010… #inc

12 Files A typical file 010010101001110010111101011010101010101001101010 101010101010101011011010010101010100100101001010 101010101010101010010101001110010111101011010101 010101001101010101010101010101011011010010101010 1001001010010101010101010101010… #include

13 Files An ASCII File Need to know the “format” of the file. In this case, the format is: –1 st number=time –2 nd number=temp –3 rd number=dewp 0000 34.5 30.9 0100 33.9 30.8 0200 33.1 30.7 0300 32.7 30.0 0400 31.5 30.0 0500 31.0 29.8

14 Files An ASCII File This file looks like some kind of table… 0000 34.5 30.9 0100 33.9 30.8 0200 33.1 30.7 0300 32.7 30.0 0400 31.5 30.0 0500 31.0 29.8

15 Files An ASCII File …but it is really a “file”—lots of numbers and symbols all lined up. 0000 34.5 30.9 010 0 33.9 30.8 020 0 33.1 30.7 030 0 32.7 30.0 0400 31.5 30.0 050 0 31.0 29.8

16 Files An ASCII File To read this file, the computer must “scan” through the file. Values in the file are separated by “tokens”, typically spaces. 0000 34.5 30.9 0100 33.9 30.8 0200 33.1 30.7 0300 32.7 30.0 0400 31.5 30.0 0500 31.0 29.8

17 Files An ASCII File To read the first value: –Must know that it is going to be an integer. –Reads “0”, “0”, “0”, and “0”. 0000 34.5 30.9 0100 33.9 30.8 0200 33.1 30.7 0300 32.7 30.0 0400 31.5 30.0 0500 31.0 29.8 Computes 0x10 3 + 0x10 2 + 0x10 1 + 0x10 0 = 0

18 Files An ASCII File To read the second value: –Must know that it is going to be a float. –Reads “3”, “4”, “.”, and “5”. 0000 34.5 30.9 0100 33.9 30.8 0200 33.1 30.7 0300 32.7 30.0 0400 31.5 30.0 0500 31.0 29.8 Computes 3x10 1 + 4x10 0 + 5x10 -1 = 34.5

19 Files Opening a File Your files are somewhere on the computer’s harddrive. But where?

20 Files Opening a File You might think there are “territories” on the disk that contain your files.

21 Files Opening a File And all of your files are right there, side by side. Assignment6.c Assignment5.c

22 Files Opening a File But files are really scattered all over the disk, put wherever the operating system could find room for them. Assignment6.c Assignment5.c

23 Files Opening a File Therefore, to open a file, you are going to need the “address” of the file on the harddrive. Fortunately, there is a C function that gives this to you!

24 Files Opening a File fin = fopen(“weather.dat”,”r”); The function is “fopen”, for “file open”. It has two “arguments”— –The first argument is the name of the file to open. –The second argument is the action you are going to take: r = “read”, w = “write”

25 Files Opening a File fin = fopen(“weather.dat”,”r”); The function returns the address of this file on the harddrive. In this case, the address of the file is being stored in a variable called “fin”—for “input file”, but you could call it anything.

26 Files Opening a File What “type” of variable is fin? FILE *fin; FILE, in contrast to float or int.

27 Files Opening a File What “type” of variable is fin? FILE *fin; Notice that there is an asterisk in front of the name of the variable when you declare it. That means that fin is a “pointer” to a file.

28 Files Opening a File An example program. Notice that the file is eventually closed with fclose. main () { FILE *fin; fin = fopen(“weather.dat”,”r”); fclose (fin); }

29 Files Reading a File Reading from the keyboard: scanf Reading from a file: fscanf

30 Files Reading a File scanf scanf(“%d”,&time); fscanf

31 Files Reading a File scanf scanf(“%d”,&time); fscanf fscanf(fin,”%d”,&time);

32 Files Reading a File scanf scanf(“%d”,&time); fscanf fscanf(fin,”%d”,&time); One additional argument—the address of the file you are reading!

33 Files Reading a File We use fscanf to read in the values of time, temp, and dewp. main () { FILE *fin; int time; float temp,dewp; fin = fopen(“weather.dat”,”r”); fscanf (fin,”%d”,&time); fscanf (fin,”%f”,&temp); fscanf (fin, %f”,&dewp); fclose (fin); }

34 Files Reading a File Could all be done in one fscanf statement, if you wanted. main () { FILE *fin; int time; float temp,dewp; fin = fopen(“weather.dat”,”r”); fscanf (fin,”%d %f %f”, &time,&temp,&dewp); fclose (fin); }

35 Files Reading a File To read six observations, this will need to be in a loop. Don’t open and close the file multiple times! main () { FILE *fin; int time,i; float temp,dewp; fin = fopen(“weather.dat”,”r”); for(i=0;i<5;i++) { fscanf (fin,”%d %f %f”, &time,&temp,&dewp); } fclose (fin); }

36 Files Writing a File Never read and write from the same file! Writing a file that already exists clobbers the old version of the file, so be careful!

37 Files Writing a File printf printf(“%d”,time); fprintf

38 Files Writing a File printf printf(“%d”,time); fprintf fprintf(fout,“%d”,time);

39 Files Writing a File printf printf(“%d”,time); fprintf fprintf(fout,“%d”,time); Only one additional argument, the address of the file you are writing!

40 Files Writing a File The file you are writing will be ASCII, meaning that you can look at it in vi or pico, to see if your program is working.

41 Files Your Assignment Make a copy of the decoded.data file from the ~JSchrage directory. cp ~JSchrage/decoded.data. Contains ten observations. –WARNING: Wind speed is in knots!

42 Files Your Assignment For each of the ten observations: –Read the observation from the file. –Use your metcalc.c library to compute relative humidity, potential temperature, and wind chill. –Write these results to a file called my.output. –Due Friday, February 13


Download ppt "Files Working with Files in C ATS 315. Files Misunderstandings about “files” In Windows and on Macs, we tend to think of files as “containing something”."

Similar presentations


Ads by Google