Memory Layout, File I/O. Bryce Boe 2013/06/27 CS24, Summer 2013 C

Similar documents
File I/O, Project 1: List ADT. Bryce Boe 2013/07/02 CS24, Summer 2013 C

File IO and command line input CSE 2451

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

Standard File Pointers

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

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

CS246 Spring14 Programming Paradigm Files, Pipes and Redirection

Standard C Library Functions

Quick review of previous lecture Ch6 Structure Ch7 I/O. EECS2031 Software Tools. C - Structures, Unions, Enums & Typedef (K&R Ch.

Input / Output Functions

2009 S2 COMP File Operations

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

Accessing Files in C. Professor Hugh C. Lauer CS-2303, System Programming Concepts

File I/O. Preprocessor Macros

CSci 4061 Introduction to Operating Systems. Input/Output: High-level

Input/Output and the Operating Systems

Introduction to file management

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

UNIX System Programming

C Basics And Concepts Input And Output

Systems Programming. 08. Standard I/O Library. Alexander Holupirek

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

C programming basics T3-1 -

System Software Experiment 1 Lecture 7

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

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

EM108 Software Development for Engineers

Simple Output and Input. see chapter 7

PROGRAMMAZIONE I A.A. 2017/2018

C-Refresher: Session 10 Disk IO

Lecture 7: file I/O, more Unix

Day14 A. Young W. Lim Tue. Young W. Lim Day14 A Tue 1 / 15

211: Computer Architecture Summer 2016

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

Standard I/O in C, Computer System and programming in C

Operating System Labs. Yuanbin Wu

Text Output and Input; Redirection

Programming & Data Structure

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

CSE 303: Concepts and Tools for Software Development

CSE 410: Systems Programming

CSC209H Lecture 3. Dan Zingaro. January 21, 2015

Announcements. Strings and Pointers. Strings. Initializing Strings. Character I/O. Lab 4. Quiz. July 18, Special character arrays

CSE 12 Spring 2016 Week One, Lecture Two

ENG120. Misc. Topics

CS113: Lecture 7. Topics: The C Preprocessor. I/O, Streams, Files

CS 220: Introduction to Parallel Computing. Input/Output. Lecture 7

File and Console I/O. CS449 Spring 2016

25.2 Opening and Closing a File

UNIX input and output

CS 261 Fall Mike Lam, Professor. Structs and I/O

UNIT IV-2. The I/O library functions can be classified into two broad categories:

Pointers cause EVERYBODY problems at some time or another. char x[10] or char y[8][10] or char z[9][9][9] etc.

fopen() fclose() fgetc() fputc() fread() fwrite()

Data File and File Handling

Contents. A Review of C language. Visual C Visual C++ 6.0

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

Organization of a file

upper and lower case English letters: A-Z and a-z digits: 0-9 common punctuation symbols special non-printing characters: e.g newline and space.

Arrays and Strings. Antonio Carzaniga. February 23, Faculty of Informatics Università della Svizzera italiana Antonio Carzaniga

DATA STRUCTURES USING C

CSE 12 Spring 2018 Week One, Lecture Two

HIGH LEVEL FILE PROCESSING

CSE 333 SECTION 3. POSIX I/O Functions

Binghamton University. CS-211 Fall Input and Output. Streams and Stream IO

What Is Operating System? Operating Systems, System Calls, and Buffered I/O. Academic Computers in 1983 and Operating System

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

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

Topic 8: I/O. Reading: Chapter 7 in Kernighan & Ritchie more details in Appendix B (optional) even more details in GNU C Library manual (optional)

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

CSE 303 Lecture 15. C File Input/Output (I/O) reading: Programming in C Ch. 16; Appendix B pp

CAAM 420 Notes Chapter 2: The C Programming Language

APT Session 4: C. Software Development Team Laurence Tratt. 1 / 14

CS240: Programming in C

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

File and Console I/O. CS449 Fall 2017

C File Processing: One-Page Summary

CSE 333 Midterm Exam July 24, Name UW ID#

CSE2301. Introduction. Streams and Files. File Access Random Numbers Testing and Debugging. In this part, we introduce

EXAMINATION REGULATIONS and REFERENCE MATERIAL for ENCM 339 Fall 2017 Section 01 Final Examination

8. Characters, Strings and Files

Exercise Session 3 Systems Programming and Computer Architecture

structs as arguments

Binghamton University. CS-211 Fall Input and Output. Streams and Stream IO

Fundamentals of Programming. Lecture 10 Hamed Rasifard

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

System Programming. Standard Input/Output Library (Cont d)

COMP1917: 09 Arrays and Strings

Physical Files and Logical Files. Opening Files. Chap 2. Fundamental File Processing Operations. File Structures. Physical file.

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

Files. Programs and data are stored on disk in structures called files Examples. a.out binary file lab1.c - text file term-paper.

THE C STANDARD LIBRARY & MAKING YOUR OWN LIBRARY. ISA 563: Fundamentals of Systems Programming

CSC 2405: Computer Systems II

Lecture 12 CSE July Today we ll cover the things that you still don t know that you need to know in order to do the assignment.

CSI 402 Lecture 2 Working with Files (Text and Binary)

File I/O. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

CMPSC 311- Introduction to Systems Programming Module: Input/Output

Computer Programming: Skills & Concepts (CP1) Files in C. 18th November, 2010

EECS2031. Modifiers. Data Types. Lecture 2 Data types. signed (unsigned) int long int long long int int may be omitted sizeof()

CSC 1107: Structured Programming

Transcription:

Memory Layout, File I/O Bryce Boe 2013/06/27 CS24, Summer 2013 C

Outline Review HW1 (+command line arguments) Memory Layout File I/O

HW1 REVIEW

HW1 Common Problems Taking input from stdin (via scanf) Performing failure tespng too late Not handling the 0 case Whitespace issues Others?

HW1 SoluPon <In- class review of hw1 solupon source code>

MEMORY LAYOUT

View from three Levels The address space of a process FuncPon acpvapon records on the stack Data within an acpvapon record

Simplified process s address space 0xFFFFFFFF STACK HEAP 0x00000000 CODE+

Data Segments Code(+) Program code IniPalizaPon data, global and stapc variables Heap Memory chunks allocated via malloc Stack FuncPon acpvapon records

CreaPng and destroying acpvapon records Program starts with main main calls strsafeconcat strsafeconcat calls strlength strlength returns strsafeconcat calls strlength strlength returns strsafeconcat returns High Memory top of stack main strsafeconcat strlength

Simplified funcpon acpvapon records Stores values passed into the funcpon as parameters Stores the funcpon s local variables

How many bytes is the simplified acpvapon record? int main(int argc, char *argv[]) { char buf[8]; for (int i = 0; i < argc; ++i) buf[i] = argv[i][0]; }

main s simplified acpvapon record argc (int) 4 bytes argv (pointer) 4 bytes buf (char array) 8 bytes i (int) 4 bytes data stored Total: 20 bytes

Think about it int main() { char msg[] = hello ; char buf[] = 1234567 ; char msg2[] = world ; } What value does buf[8] hold? What about msg[7]?

Similar but different int main() { int x = 0xDEADBEEF; char buf[] = 1234567 ; } What value does buf[8] hold?

InspecPng addresses in a program <In class review of variables_in_memory.c>

FILE I/O

File I/O I/O stands for input/output Provided by the stdio library (stdio.h) Allows reading and wripng to/from streams (type: FILE *) stdin (read only) stdout / stderr (write only) named files

stdio.h Explore via opengroup: hop:// pubs.opengroup.org/onlinepubs/009695399/ basedefs/stdio.h.html Explore via `man stdio.h` (same info as opengroup, but not easily searchable or linkable)

Opening named files and closing streams FILE* fopen(char *filename, char *mode) open a file specifying whether to open for reading, wripng, appending, and create or truncate if desired int fclose(file *stream) close an open FILE* Flush and close the stream Return 0 on success

Reading from streams int fgetc(file *stream) Returns the next character in the stream or EOF (this is why it returns an int) char *fgets(char *buf, int n, FILE *stream) Read at most n- 1 bytes from stream into buf Also stops when \n or EOF is reached Terminates buf with the null character \0

Other read funcpons fread very useful (especially when input is unbounded), we won t use in this class fscanf useful, but tricky, don t use in this class FuncPons with similar names less the f Uses the stdin stream thus doesn t require the stream argument

WriPng to streams int fputc(int c, FILE *stream) Write a single character c to stream int fputs(char *buf, FILE *stream) Write the null- terminated string in buf to stream int fprinw(file *stream, char *format, ) Write formaoed string to stream making the specified replacements

SECURITY WARNING NEVER do the following: fprinw(stdout, buf); // buf is some c- string Could allow an aoacker to inspect and change your program (format string exploit) Use either fputs or fprin-(stdout, %s, buf)

Other write funcpons fwrite generally very useful, we won t use in this class FuncPons with similar names less the f Uses the stdout stream thus doesn t require the stream argument

Other useful stream funcpons int feof(file *stream) Return non- zero if the stream has reached the end of the file int fflush(file *stream) Force wripng any buffered data to the stream Flushing typically occurs when a newline is encountered, thus fflush is o en needed when newlines aren t used

I/O QuesPons Why does fgetc/fputc return/get an integer? If a file with only a single newline at the end is 32 bytes long, how many bytes does the buffer for fgets require to read the enpre file?

More I/O QuesPons When using fgets, how can you determine if the string is longer than the value of n (the number of bytes to read) What will happen if the n parameter to fgets is larger than the buffer?

Real- Pme cat program wripng <In class creapon of simple_copy.c>

For Tuesday Finish reading chapter 1 in the text book