C FILE Type. Basic I/O in C. Accessing a stream requires a pointer of type FILE.

Similar documents
C FILE Type. Basic I/O in C. Accessing a stream requires a pointer variable of type FILE.

Stream Model of I/O. Basic I/O in C

C Input/Output. Before we discuss I/O in C, let's review how C++ I/O works. int i; double x;

File IO and command line input CSE 2451

Content. Input Output Devices File access Function of File I/O Redirection Command-line arguments

Standard File Pointers

Lecture 7: Files. opening/closing files reading/writing strings reading/writing numbers (conversion to ASCII) command line arguments

Input/Output and the Operating Systems

Programming in C. Session 8. Seema Sirpal Delhi University Computer Centre

Fundamentals of Programming

Fundamental of Programming (C)

Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

CS102: Standard I/O. %<flag(s)><width><precision><size>conversion-code

System Software Experiment 1 Lecture 7

CSC209H Lecture 3. Dan Zingaro. January 21, 2015

Applied Programming and Computer Science, DD2325/appcs15 PODF, Programmering och datalogi för fysiker, DA7011

CMPT 102 Introduction to Scientific Computer Programming. Input and Output. Your first program

This code has a bug that allows a hacker to take control of its execution and run evilfunc().

UNIT-V CONSOLE I/O. This section examines in detail the console I/O functions.

25.2 Opening and Closing a File

File I/O. Arash Rafiey. November 7, 2017

C How to Program, 6/e by Pearson Education, Inc. All Rights Reserved.

File I/O. Last updated 10/30/18

2009 S2 COMP File Operations

Program Translation. text. text. binary. binary. C program (p1.c) Compiler (gcc -S) Asm code (p1.s) Assembler (gcc or as) Object code (p1.

Chapter 5, Standard I/O. Not UNIX... C standard (library) Why? UNIX programmed in C stdio is very UNIX based

Should you know scanf and printf?

Arithmetic Expressions in C

File Handling in C. EECS 2031 Fall October 27, 2014

Course organization. Course introduction ( Week 1)

Basic I/O. COSC Software Tools. Streams. Standard I/O. Standard I/O. Formatted Output

Lecture 03 Bits, Bytes and Data Types

M.CS201 Programming language

Programming in C Quick Start! Biostatistics 615 Lecture 4

C for Engineers and Scientists: An Interpretive Approach. Chapter 14: File Processing

HIGH LEVEL FILE PROCESSING

IO = Input & Output 2

printf("%c\n", character); printf("%s\n", "This is a string"); printf("%s\n", string); printf("%s\n",stringptr); return 0;

CSC 270 Survey of Programming Languages. Input and Output

CSC 1107: Structured Programming

CSC 1107: Structured Programming

C Fundamentals & Formatted Input/Output. adopted from KNK C Programming : A Modern Approach

Unit 4. Input/Output Functions

C Concepts - I/O. Lecture 19 COP 3014 Fall November 29, 2017

1/25/2018. ECE 220: Computer Systems & Programming. Write Output Using printf. Use Backslash to Include Special ASCII Characters

File Access. FILE * fopen(const char *name, const char * mode);

CYSE 411/AIT681 Secure Software Engineering Topic #12. Secure Coding: Formatted Output

2/9/18. CYSE 411/AIT681 Secure Software Engineering. Readings. Secure Coding. This lecture: String management Pointer Subterfuge

Modifiers. int foo(int x) { static int y=0; /* value of y is saved */ y = x + y + 7; /* across invocations of foo */ return y; }

7/21/ FILE INPUT / OUTPUT. Dong-Chul Kim BioMeCIS UTA

EL2310 Scientific Programming

Operators and Control Flow. CS449 Fall 2017

EL2310 Scientific Programming

Input / Output Functions

INTRODUCTION TO C++ C FORMATTED INPUT/OUTPUT. Dept. of Electronic Engineering, NCHU. Original slides are from

scanf erroneous input Computer Programming: Skills & Concepts (CP) Characters Last lecture scanf error-checking our input This lecture

Computer Programming Unit v

8. Characters, Strings and Files

Console Input and Output

are all acceptable. With the right compiler flags, Java/C++ style comments are also acceptable.

PROGRAMMAZIONE I A.A. 2017/2018

Work relative to other classes

Course Outline Introduction to C-Programming

Fundamental of Programming (C)

Student Number: Instructor: Reid Section: L0101 (10:10-11:00am)

Engineering program development 7. Edited by Péter Vass

Lecture 4. Console input/output operations. 1. I/O functions for characters 2. I/O functions for strings 3. I/O operations with data formatting

Mode Meaning r Opens the file for reading. If the file doesn't exist, fopen() returns NULL.

C programming basics T3-1 -

Outline. Computer programming. Debugging. What is it. Debugging. Hints. Debugging

Slide Set 8. for ENCM 339 Fall 2017 Section 01. Steve Norman, PhD, PEng

Library Functions. General Questions

Reserved Words and Identifiers

Programming Language B

Outline. Computer Programming. Preprocessing in C. File inclusion. Preprocessing in C

Bil 104 Intiroduction To Scientific And Engineering Computing. Lecture 7

Fundamentals of Programming. Lecture 11: C Characters and Strings

Darshan Institute of Engineering & Technology for Diploma Studies Unit 6

CSE 230 Intermediate Programming in C and C++ Input/Output and Operating System

Input/output functions

EM108 Software Development for Engineers

Introduction to Computing Lecture 03: Basic input / output operations

Formatted Input/Output

Introduction to Programming

Basic Types and Formatted I/O

Binghamton University. CS-220 Spring Includes & Streams

Variables Data types Variable I/O. C introduction. Variables. Variables 1 / 14

Input/Output: Advanced Concepts

Fundamentals of Programming. Lecture 10 Hamed Rasifard

CS246 Spring14 Programming Paradigm Files, Pipes and Redirection

Lab Exam 1 D [1 mark] Give an example of a sample input which would make the function

File I/O. Preprocessor Macros

Computer Programming: Skills & Concepts (CP) Files in C

CMPE-013/L. File I/O. File Processing. Gabriel Hugh Elkaim Winter File Processing. Files and Streams. Outline.

Lab Session # 1 Introduction to C Language. ALQUDS University Department of Computer Engineering

// file2.c. // file1.c #include <stdio.h> int A1 = 42; // 1.1 static int B1; // 1.2. int A2 = 12; // 2.1 int B2; // 2.2. extern int A2; // 1.

Continued from previous lecture

Standard C Library Functions

Unit 6 Files. putchar(ch); ch = getc (fp); //Reads single character from file and advances position to next character

Transcription:

C FILE Type Accessing a stream requires a pointer of type FILE. 1 C provides three standard streams, which require no special preparation other than the necessary include directive: stdin standard input keyboard stdout standard output console window stderr standard error console window Alternatively, you can declare FILE pointers and manage their connections to disk files. header file: <stdio.h>

Output with printf() 2 The Standard Library provides the printf() function which can be used to write formatted output to the standard output stream, stdout. int printf(const char * restrict format,...); The first parameter is a string literal that specifies the formatting to be used. The remaining parameters, if any, specify the values to be written. The return value is the number of characters that were written, or a negative value if an error was encountered.

Output Examples The specification of format is mildly complex: 3 int i = 42, j = 17; double x = 3.1415962; printf("i =%3d j =%3d\n", i, j); printf("x =%7.4f\n", x); i = 42 j = 17 x = 3.1416 There is an excellent discussion of the details in section 22.3 of the King book.

More on printf() Format Specifiers The general form of a printf() specifier is: 4 % #0 12.5 L g flags: optional, more than one allowed - left-justify within field + always show leading sign space precede non-negative numbers with a space # see reference 0 pad with zeros to fill field

More on printf() Format Specifiers The general form of a printf() specifier is: 5 % #0 12.5 L g min width: optional, pad with spaces if field not filled, ignored if insufficient precision: optional, number of digits for integer values, number of digits after decimal point for float/double

More on printf() Format Specifiers The general form of a printf() specifier is: 6 % #0 12.5 L g length modifier: optional, indicates value has a type that's longer or shorter than is normal for a particular conversion specifier (see following) d u hd ld normally used for int values normally used for unsigned int values normally used for short int values normally used for long int values see reference for more Table 22.5

More on printf() Format Specifiers The general form of a printf() specifier is: 7 % #0 12.5 L g conversion specifier: mandatory d, i converts int to decimal form (base-10) f, F converts double to decimal form; default precison 6 c converts int to unsigned char x, X converts unsigned int to hexadecimal (base-16) see reference for more Table 22.6

Format Specifiers for <stdint.h> 8 The basic integer format codes will work with int32_t and uint32_t (with compiler warnings), but are not reliable with int64_t and uint64_t. The header file <inttypes.h> provides specialized format codes for the new integer types. Here's a very brief description; see King 27.2 for details. PRIdN for signed integer types, N = 8, 16, 32, 64 PRIuN for unsigned integer types For example: uint64_t K = 123456789012345; printf("%15"priu64"\n", K); // note use of quotes!!

Input with scanf() 9 The Standard Library provides the scanf() function which can be used to read formatted input from the standard input stream, stdin. int scanf(const char * restrict format,...); The first parameter is a string literal that specifies the formatting expected in the input stream. The remaining parameters, if any, specify the variables that will receive the values that are read. The return value is the number of values that were read, or the value of EOF if an input failure occurs.

Input Examples 10 Suppose we have an input stream of the following form: 17 42 3.14159625 int i = 1, j = 1; double x = 1.5; scanf("%d %d %f", &i, &j, &x); printf("%5d %5d %7.4f\n", i, j, x); 17 42 3.1416 Suppose we have an input stream of the following form: 17, 42, 3.14159625 int i = 1, j = 1; double x = 1.5; scanf("%d, %d, %f", &i, &j, &x); printf("%5d %5d %7.4f\n", i, j, x); 17 42 3.1416

Input Examples 11 Suppose we have an input stream of the following form: 3.14159625 int a = 1, b = 1; scanf("%d.%d", &a, &b); printf("%d\n%d\n", a, b); 3 14159625

More on scanf() Format Specifiers The general form of a scanf() specifier is: 12 % * 12 L g *: optional, read but do not assign value to an object max width: optional, leading whitespace doesn't count

More on scanf() Format Specifiers The general form of a scanf() specifier is: 13 % * 12 L g length modifier: optional, indicates object that will receive value has a type that's longer or shorter than is normal for a particular conversion specifier (see following) see reference for more Table 22.11 conversion specifier: mandatory see reference for more Table 22.12

Opening Files File I/O is almost identical to I/O with stdin and stdout. 14 You must make a call in order to associate a FILE pointer with a particular file: FILE *fopen(const char* restrict filename, const char* restrict mode); filename path/name of file to be opened mode "r" "w" "a" "rb" "wb" "ab" "r+" "w+" "a+" see reference for more Return value is valid FILE pointer if successful and NULL otherwise.

File I/O 15 File I/O is accomplished using variations of printf() and scanf(): int fprintf(file * restrict stream, const char * restrict format,...); int fscanf(file * restrict stream, const char * restrict format,...); These are used in the same way as their counterparts, aside from taking a FILE*.

Closing Files When done with a file, you should close the file: 16 int fclose(file *stream); Any unwritten buffered data will be delivered to the host environment. Any unread buffered data will be discarded. Returns 0 on success and EOF otherwise.

Example: Caesar Cipher 17 The Caesar Cipher is an ancient example of a scheme for encrypting text. The basic idea is quite simple: create the ciphertext by replacing each letter in the unencrypted text (plaintext) with a letter that is a fixed position from it in the alphabet, wrapping around the ends of the alphabet as necessary. For example, using a shift of 3 positions, we'd use the following substitution table: a b c d e f g h i j k l m n o p q r s t u v w x y z d e f g h i j k l m n o p q r s t u v w x y z a b c So, would be encrypted as computer organization frpsxwhu rujdqlcdwlrq

Example: Analysis of Problem 18 Let's consider implementing a C program that will apply the Caesar Cipher to a given text sample. Let's assume the user will want to specify the shift amount and the text to be encrypted. Let's also assume the user will want the case of the original text to be preserved, but that only letters should be changed (in accord with what we know about the original approach). Let's mandate the interface: caesar <shift amount> <plaintext file>

Example: Procedural Decomposition I identify the following tasks that need to be carried out: 19 - validate the command-line parameters - process the input file - exit - verify number of parameters supplied - verify shift amount is sensible - verify input file exists - open input file - read next input char until no more exist + if char is a letter compute its shift target + write shift target (where?) - close input file

Example: Front End int main(int argc, char** argv) { 20 int ckstatus; if ( ( ckstatus = checkparams(argc, argv) )!= 0 ) { return ckstatus; int shiftamt = setshiftamt(argv[1]); printf("shifting alphabetic input text by %d positions.\n", shiftamt); int charsshifted = processfile(shiftamt, argv[2]); printf("shifted %d alphabetic characters.\n", charsshifted); return 0; int setshiftamt(char* src) { char *p; int shiftamt = strtol(src, &p, 10); return shiftamt;

Example: Validating Parameters int checkparams(int nparams, char** params) { 21 if ( nparams!= 3 ) { printf("invoke as: caesar <shift distance> <file name>\n"); return WRONG_NUMBER_OF_PARAMS; if (!checkshiftamt(params[1]) ) { return INVALID_SHIFT_SPECIFIED; FILE* fp; if ( (fp = fopen(params[2], "r") ) == 0 ) { printf("the file %s could not be found.\n", params[2]); return FILE_NOT_FOUND; else { fclose(fp); return 0;

Example: Processing the File int processfile(int shiftamt, char* filename) { int nchars = 0; FILE *In = fopen(filename, "r"); char nextin, nextout; while ( fscanf(in, "%c", &nextin) == 1 ) { if ( isalpha(nextin) ) { ++nchars; nextout = applyshift(nextin, shiftamt); else nextout = nextin; 22 printf("%c", nextout); char applyshift(char Original, int shiftamt) { fclose(in); return nchars; char Modified = Original;... return Modified;

Executing the Caesar Cipher Program 23 A Man's a Man for A' That Is there for honesty poverty That hings his head, an' a' that; The coward slave - we pass him by, We dare be poor for a' that! D Pdq'v d Pdq iru D' Wkdw For a' that, an' a' that, Our toils obscure an' a' that, Lv wkhuh iru krqhvwb sryhuwb The rank is but the guinea's stamp, Wkdw klqjv klv khdg, dq' d' wkdw; The man's the gowd for a' that. Wkh frzdug vodyh - zh sdvv klp eb,... Zh gduh eh srru iru d' wkdw! Iru d' wkdw, dq' d' wkdw, Rxu wrlov revfxuh dq' d' wkdw, Wkh udqn lv exw wkh jxlqhd'v vwdps, Wkh pdq'v wkh jrzg iru d' wkdw....