Computer Programming

Similar documents
Outline. Computer Programming. Structure of a function. Functions. Function prototype. Structure of a function. Functions

C: How to Program. Week /May/28

Chapter 8 - Characters and Strings

Chapter 8 C Characters and Strings

Characters and Strings

BIL 104E Introduction to Scientific and Engineering Computing. Lecture 4

Fundamentals of Programming. Lecture 11: C Characters and Strings

Scientific Programming in C V. Strings

C Libraries. Bart Childs Complementary to the text(s)

Dr M Kasim A Jalil. Faculty of Mechanical Engineering UTM (source: Deitel Associates & Pearson)

by Pearson Education, Inc. All Rights Reserved.

Chapter 8: Character & String. In this chapter, you ll learn about;

Contents. Preface. Introduction. Introduction to C Programming

Review: Constants. Modules and Interfaces. Modules. Clients, Interfaces, Implementations. Client. Interface. Implementation

C mini reference. 5 Binary numbers 12

CSE123. Program Design and Modular Programming Functions 1-1

cs3157: another C lecture (mon-21-feb-2005) C pre-processor (3).

Introduction to Programming Systems

Converting a Lowercase Letter Character to Uppercase (Or Vice Versa)

INTRODUCTION TO C++ FUNCTIONS. Dept. of Electronic Engineering, NCHU. Original slides are from

Lecture 04 FUNCTIONS AND ARRAYS

CS3157: Advanced Programming. Outline

Muntaser Abulafi Yacoub Sabatin Omar Qaraeen. C Data Types

today cs3157-fall2002-sklar-lect05 1

Lecture 10 Arrays (2) and Strings. UniMAP SEM II - 11/12 DKT121 1

C: Pointers, Arrays, and strings. Department of Computer Science College of Engineering Boise State University. August 25, /36

Structured programming

C Characters and Strings

CSE2301. Functions. Functions and Compiler Directives

C: Arrays, and strings. Department of Computer Science College of Engineering Boise State University. September 11, /16

Functions. Angela Chih-Wei Tang ( 唐之瑋 ) Department of Communication Engineering National Central University JhongLi, Taiwan.

Characters, c-strings, and the string Class. CS 1: Problem Solving & Program Design Using C++

Programming Fundamentals for Engineers Functions. Muntaser Abulafi Yacoub Sabatin Omar Qaraeen. Modular programming.

Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and

Arrays, Strings, & Pointers

Main Program. C Programming Notes. #include <stdio.h> main() { printf( Hello ); } Comments: /* comment */ //comment. Dr. Karne Towson University

Iosif Ignat, Marius Joldoș Laboratory Guide 9. Character strings CHARACTER STRINGS

SWEN-250 Personal SE. Introduction to C

C strings. (Reek, Ch. 9) 1 CS 3090: Safety Critical Programming in C

Lecture 04 FUNCTIONS AND ARRAYS

Appendices E through H are PDF documents posted online at the book s Companion Website (located at

CSCE150A. Introduction. Basics. String Library. Substrings. Line Scanning. Sorting. Command Line Arguments. Misc CSCE150A. Introduction.

System Design and Programming II

Introduction to Algorithms and Data Structures. Lecture 6 - Stringing Along - Character and String Manipulation

Computer Science & Engineering 150A Problem Solving Using Computers. Chapter 9. Strings. Notes. Notes. Notes. Lecture 07 - Strings

Strings and Library Functions

Functions. Systems Programming Concepts

A function is a named group of statements developed to solve a sub-problem and returns a value to other functions when it is called.

Computer Science & Engineering 150A Problem Solving Using Computers

Basic C Programming. Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island

Approximately a Test II CPSC 206

Functions. Computer System and programming in C Prentice Hall, Inc. All rights reserved.

Language Design COMS W4115. Prof. Stephen A. Edwards Spring 2003 Columbia University Department of Computer Science

Chapter 15 - C++ As A "Better C"

ONE DIMENSIONAL ARRAYS

Chapter 7 C Pointers

C PROGRAMMING. Characters and Strings File Processing Exercise

Axivion Bauhaus Suite Technical Factsheet MISRA

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

Introduction to string

Chapter 10 Characters, Strings, and the string class

To declare an array in C, a programmer specifies the type of the elements and the number of elements required by an array as follows

Reading Assignment. Strings. K.N. King Chapter 13. K.N. King Sections 23.4, Supplementary reading. Harbison & Steele Chapter 12, 13, 14

C Functions. CS 2060 Week 4. Prof. Jonathan Ventura

N v 1. Type generic string interfaces honor the const contract of application code ISO/IEC JTC 1/SC 22/WG14. August 20, 2016

AIR FORCE SCHOOL,BAMRAULI COMPUTER SCIENCE (083) CLASS XI Split up Syllabus (Session ) Contents

B.V. Patel Institute of Business Management, Computer & Information Technology, Uka Tarsadia University

Chapter 10: Characters, C- Strings, and More About the string Class

Chapter 10: Character Testing. From Program Character Case Conversion 8/23/2014. Character Testing. Character Case Conversion

Motor Industry Software Reliability Association (MISRA) C:2012 Standard Mapping of MISRA C:2012 items to Goanna checks

OBJECTIVE QUESTIONS: Choose the correct alternative:

C Functions Pearson Education, Inc. All rights reserved.

Pointer Arithmetic and Lexical Scoping. CS449 Spring 2016

Lecture 05 Pointers ctd..

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

Computer Programming. The greatest gift you can give another is the purity of your attention. Richard Moss

Lecture 03 Bits, Bytes and Data Types

Model Viva Questions for Programming in C lab

Fundamentals of Computer Programming Using C

OBJECT-ORIENTED PROGRAMMING CONCEPTS-CLASSES II

C Language Part 1 Digital Computer Concept and Practice Copyright 2012 by Jaejin Lee

Computer Science XII Important Concepts for CBSE Examination Questions

CS201- Introduction to Programming Current Quizzes

Course organization. Course introduction ( Week 1)

Split up Syllabus (Session )

Holtek C and ANSI C Feature Comparison User s Guide

Chapter 10: Characters, C- Strings, and More About the string Class Character Testing

by Pearson Education, Inc. All Rights Reserved.

Appendix A Developing a C Program on the UNIX system

1 Pointer Concepts. 1.1 Pointer Examples


High Performance Programming Programming in C part 1

Computer Security. Robust and secure programming in C. Marius Minea. 12 October 2017

UNIT-I Input/ Output functions and other library functions

Computers Programming Course 11. Iulian Năstac

8. Characters, Strings and Files

Computer Science & Information Technology (CS) Rank under AIR 100. Examination Oriented Theory, Practice Set Key concepts, Analysis & Summary

Lecture07: Strings, Variable Scope, Memory Model 4/8/2013

DAY 3. CS3600, Northeastern University. Alan Mislove

ECE 2400 Computer Systems Programming Fall 2017 Topic 12: Transition from C to C++

Transcription:

Computer Programming Make everything as simple as possible, but not simpler. Albert Einstein T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 1

Outline Functions Structure of a function Function invocation Parameter passing Variable scope Functions for character processing T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 2

Functions Functions Modularize a program All variables declared inside functions are local variables Known only in function defined Parameters Communicate information between functions Local variables Benefits Divide and conquer Manageable program development Software reusability Use existing functions as building blocks for new programs Abstraction - hide internal details (library functions) Avoids code repetition T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 3

Structure of a function Structure: return_value_type name(formal_parameter_list) { declarations statements } name: any valid identifier return-value-type: data type of the result (default int) First row is called a function header Formal parameter list may contain: No parameters, i.e. header is just return_value_type identifier(); or return_value_type identifier(void); One or more parameters, separated by commas. A formal parameter is specified by: type identifier T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 4

Structure of a function Two categories of functions: Functions returning a value using return expression; Functions not returning a value: use just return;. return_value_type is replaced by void Returning control If nothing returned upon encounter of return; or, until reaches right brace If something returned Upon encounter of return expression; T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 5

Function prototype Function prototype: Function name Parameters - what the function takes in Return type - data type function returns (default int) Used to validate functions Obtained by copying the header and appending a semicolon Formal parameter names (not types!) can be omitted Prototype only needed if function definition comes after use in program int maximum( int, int, int ); Takes in 3 ints Returns an int T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 6

Function arguments Parameters: appear in definitions Arguments: appers in function calls In C arguments are passed by value Argument conversion rules. The compiler has: encountered a prototype prior the call: the value of each argument is implicitly converted to the type of the corresponding parameter as if by assignment NOTencountered a prototype prior the call: default argument promotions, i.e. float=>double; char & short=>int T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 7

Array arguments If arg is one-dimensional array: size may be left unspecified int f(int a[]){ // no length specified } Note: cannot use sizeof to get the length of the array Variable length array arguments (C99): int f(int n, int a[n]){ } Note: length arg, n, must precede array T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 8

Header files Header files: contain prototypes for library functions Standard library functions prototypes are found in header files (e.g. stdio.h, stdlib.h, math.h, string.h, etc.). Load with #include <filename.h> Custom header files Create a file with function prototypes (and macros if any) Save as filename.h Load in other files with #include "filename.h" Reuse functions T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 9

Some of the standard library headers. Header <assert.h> <ctype.h> Explanation Contains macros and information for adding diagnostics that aid program debugging. Contains function prototypes for functions that test characters for certain properties, and function prototypes for functions that can be used to convert lowercase letters to uppercase letters and vice versa. <errno.h> Defines macros that are useful for reporting error conditions. <float.h> Contains the floating-point size limits of the system. <limits.h> Contains the integral size limits of the system. <locale.h> Contains function prototypes and other information that enables a program to be modified for the current locale on which it s running. The notion of locale enables the computer system to handle different conventions for expressing data like dates, times, dollar amounts and large numbers throughout the world. <math.h> Contains function prototypes for math library functions. Contains function prototypes for functions that allow bypassing of the usual <setjmp.h> function call and return sequence. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 10

Some of the standard library headers. Header <signal.h> <stdarg.h> <stddef.h> <stdio.h> <stdlib.h> <string.h> <time.h> Explanation Contains function prototypes and macros to handle various conditions that may arise during program execution. Defines macros for dealing with a list of arguments to a function whose number and types are unknown. Contains common type definitions used by C for performing calculations. Contains function prototypes for the standard input/output library functions, and information used by them. Contains function prototypes for conversions of numbers to text and text to numbers, memory allocation, random numbers, and other utility functions. Contains function prototypes for string-processing functions. Contains function prototypes and types for manipulating the time and date. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 11

Calling Functions Function returning no value: name(effective_parameter_list); Function returning a value As above, loose returned value As an operand of an expression, returned value used in expression evaluation Correspondence between formal and effective parameters is positional If an effective parameter type is different than the formal parameter type, an automatic conversion occurs T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 12

Calling Functions Used when invoking functions Call by value Copy of argument passed to function Changes in function do not effect original Use when function does not need to modify argument Avoids accidental changes Call by reference (in C++ only) Passes original argument Changes in function affect original Only used with trusted functions T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 13

Calling Functions. Call by value. Example #include <stdio.h> #include <stdlib.h> /* swap values of a and b */ void swap(int a, int b) { int aux; printf("\nin swap upon entry: a=%d b=%d\n", a, b); aux = a; a = b; b = aux; printf("\nin swap at exit: a=%d b=%d\n", a, b); } int main() { int a=3, b=2; } swap will have no effect in main() as parameters are passed by value printf("\nin main before invoking swap: a=%d b=%d\n", a, b) swap(a, b); printf("\nin main after invoking swap: a=%d b=%d\n", a, b) system("pause"); return 0; T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 14

Calling Functions. Call by value using pointers. Example #include <stdio.h> #include <stdlib.h> /* swap values of a and b */ void swap(int *a, int *b) { int aux; printf("\nin swap upon entry: a=%d b=%d\n", *a, *b); aux = *a; *a = *b; *b = aux; printf("\nin swap at exit: a=%d b=%d\n", *a, *b); } int main() { int a=3, b=2; printf("\nin main before invoking swap: a=%d b=%d\n", a, b); swap(&a, &b); printf("\nin main after invoking swap: a=%d b=%d\n", a, b); system("pause"); return 0; } T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 15

Notes: Calling functions When an effective parameter is the name of an array the function can change the elements of that array For single-dimensional arrays, a formal parameter can be declared as: an array: type formal_param_name[] a pointer: type *formal_param_name The two are equivalent, in the body you can use the indexed variable formal_param_name[index] When values of array elements or the referred value should not be changed by a function use pointer to constant construct for formal parameters const type *identifier T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 16

Calling functions. Call by reference Exists only in C++. Uses & after type spec Identical to PASCAL call by reference Example: #include <stdio.h> #include <stdlib.h> /* swap values of a and b */ void swap(int& a, int& b) { int aux; printf("\nin swap upon entry: a=%d b=%d\n", a, b); aux = a; a = b; b = aux; printf("\nin swap at exit: a=%d b=%d\n", a, b); } int main() { int a=3, b=2; printf("\nin main before invoking swap: a=%d b=%d\n", a, b); swap(a, b); printf("\nin main after invoking swap: a=%d b=%d\n", a, b); system("pause"); return 0; } T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 17

What makes a good Function? It is called several times It helps make the calling code more compact and more readable It does just one well-defined task, and does it well. Its interface to the rest of the program is clean and narrow. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 18

The scope of a name The scope of a name is the part of a program over which the name is visible The scope defines the section of a program where the name can be legally used Examples: a global variable has global scope: it is accessible throughout a program a variable defined inside a function has function scope: it is only accessible within the defining function T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 19

Variable scope Global variables Defined at the beginning of a source file Visible from the point of their definition to the end of the file Declaration: type identifier, identifier ; static type identifier, identifier ; Extern variables: visible from other source files than the one containing the definition extern type identifier, identifier ; can be declared: after a function header. Scope is within function at the beginning of a source file: scope is all functions in that file T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 20

Global variable dangers Global variables are useful to share information across functions but they must be used with great caution because: they introduce coupling between different parts of the same program they make a program less readable they make a program less maintainable they may introduce name clashes T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 21

Variable scope Local variables declared in a function or in a block scope is that unit categories: automatic allocated on the stack at run time cease to exist upon function return, or when control leaves block example: int a, b, c; double x; static allocated by the compiler in a special area persist during program execution cannot be declared extern example: static int x, y, z; register allocated in the registers of the processor declared using: register type variable_name; T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 22

Automatic Variables Automatic (or stack) variables are declared at the beginning of a function Their scope is the function where they are declared Automatic variables exist only while the function is being executed: they are destroyed when the function is exited and re-created when it is re-entered T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 23

Memory layout for C programs High Address Low Address Args and env vars Stack V Unused memory ^ Heap Uninitialized Data Segment (bss) Initialized Data Segment Text Segment Command line arguments and environment variables Initialized to zero by exec. Read from the program file by exec. Read from the program file by exec. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 24

The Basic Call/Return Process The following things happen during a C call and return: 1. The arguments to the call are evaluated and put in an agreed place. 2. The return address is saved on the stack. 3. Control passes to the called procedure. 4. The bookkeeping registers and register variables of the calling procedure are saved so that their values can be restored on return. 5. The called procedure obtains stack space for its local variables, and temporaries. 6. The bookkeeping registers for the called procedure are appropriately initialized. By now, the called procedure must be able to find the argument values. 7. The body of the called procedure is executed. 8. The returned value, if any, is put in a safe place while the stack space is freed, the calling procedure s register variables and bookkeeping registers are restored, and the return address is obtained and transferred to. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 25

The C Stack The C run-time system manages an internal data structure that is called the C Stack and which it uses to create and manipulate temporary variables The stack is filled and emptied in LIFO order (lastin-first-out) The stack pointer points to the head of the stack (the last stack location to have been filled) The C stack is used to: store automatic variables store function parameters T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 26

The C stack. Example void foo (int i, char *name) { char LocalChar[24]; int LocalInt;... } int main(int argc, char *argv[]) { int MyInt=1; // stack variable located at ebp-8 char *MyStrPtr="MyString"; // stack var at ebp-4... foo(myint,mystrptr); // call foo function... } T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 27

The C stack. Example Sample stack frame foo() that takes two arguments and contains four local variables. The low memory is at the top of the stack, so in this illustration the stack grows toward lower memory. foo(int i, char* name) Address Value Description Len 0x0012FF4C? Last Local Variable - Integer - LocalInt 4 0x0012FF50? First Local Variable - String - LocalChar 24 0x0012FF68 0x12FF80 Calling Frame of Calling Function: main() 4 0x0012FF6C 0x401040 Return Address of Calling Function: main() 4 0x0012FF70 1 Arg: 1st argument: MyInt (int) 4 0x0012FF74 0x40703C Arg: 2nd argument: Pointer tomystring (char *) 4 T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 28

Static automatic variables Automatic variables are destroyed after the function returns. What can be done to preserve their value across function calls? Automatic variables that are declared static have permanent storage: their value is preserved across function calls Example: a function that maintains a permanent storage for float values: int store(float val) /* name and return value */ /* parameter declaration */ { static float storagearray[100]; /* local variable */ static int nofentries=0; /* local variable */ } storagearray[nofentries]=val; /* store new value */ nofentries++; /* increment counter */ return nofentries; /* return */ T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 29

File scope Scope rules (I) Identifier defined outside function, known in all functions Global variables, function definitions, function prototypes Function scope Can only be referenced inside a function body Only labels (start: case:, etc.) T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 30

Block scope Scope rules (II) Identifier declared inside a block Block scope begins at declaration, ends at right brace Variables, function parameters (local variables of function) Outer blocks "hidden" from inner blocks if same variable name Function prototype scope Identifiers in parameter list Names in function prototype optional, and can be used anywhere T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 31

Strings A character string is stored in an single-dimensional array of type char The last character in the array is the ASCII NUL ('\0'); The name of the array is a constant pointer to the first element Example: char string[]="character string"; stored in (first row: indices in string; second row: hex values of bytes): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 43 68 61 72 61 63 74 65 72 20 73 74 72 69 6e 67 00 T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 32

Strings Relations (for the previous example): string[i], with i [0,15] is the ASCII code for the i th character of the string *(string+i), with i [0,15] is the ASCII code for the i th character of the string *(string+i) string[i] Character string array declaration: char *arr[]={"string0", "string1", "string2",..., "stringn"} arr[i], for i [0,n] is a pointer to "stringi", arr[i] can be printed with printf("%s\n", arr[i]); T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 33

Character handling library Prototypes in ctype.h Note that in C, true means <> 0, and false means 0. Prototype int isdigit( int c ) int isalpha( int c ) int isalnum( int c ) int isxdigit( int c ) int islower( int c ) int isupper( int c ) int tolower( int c ) Description Returns true if c is a digit and false otherwise. Returns true if c is a letter and false otherwise. Returns true if c is a digit or a letter and false otherwise. Returns true if c is a hexadecimal digit character and false otherwise. Returns true if c is a lowercase letter and false otherwise. Returns true if c is an uppercase letter; false otherwise. If c is an uppercase letter, tolower returns c as a lowercase letter. Otherwise, tolower returns the argument unchanged. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 34

Character handling library Prototypes in ctype.h Prototype int toupper( int c ) int isspace( int c ) int iscntrl( int c ) int ispunct( int c ) int isprint( int c ) int isgraph( int c ) Description If c is a lowercase letter, toupper returns c as an uppercase letter. Otherwise, toupper returns the argument unchanged. Returns true if c is a white-space character newline ('\n'), space (' '), form feed ('\f'), carriage return ('\r'), horizontal tab ('\t'), or vertical tab ('\v') and false otherwise Returns true if c is a control character and false otherwise. Returns true if c is a printing character other than a space, a digit, or a letter and false otherwise. Returns true value if c is a printing character including space (' ') and false otherwise. Returns true if c is a printing character other than space (' ') and false otherwise. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 35

String Conversion Functions Conversion functions Prototypes in <stdlib.h> (general utilities library) Convert strings of digits to integer and floating-point values Prototype Description double atof( const char *nptr ) int atoi( const char *nptr ) long atol( const char *nptr ) Converts the string nptr to double. Converts the string nptr to int. Converts the string nptr to long int. double strtod( const char *nptr, char **endptr ) Converts the string nptr to double. long strtol( const char *nptr, char **endptr, int base ) unsigned long strtoul( const char *nptr, char **endptr, int base ) Converts the string nptr to long. Converts the string nptr to unsigned long. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 36

String Manipulation Functions of the String Handling Library String handling library has functions to Manipulate string data Search strings Function prototype Tokenize strings Determine string length Function description char *strcpy( char *s1, const char *s2 ) char *strncpy( char *s1, const char *s2, size_t n ) char *strcat( char *s1, const char *s2 ) char *strncat( char *s1, const char *s2, size_t n ) Copies string s2 into array s1. The value of s1 is returned. Copies at most n characters of string s2 into array s1. The value of s1 is returned. Appends string s2 to array s1. The first character of s2 overwrites the terminating null character of s1. The value of s1 is returned. Appends at most n characters of string s2 to array s1. The first character of s2 overwrites the terminating null character of s1. The value of s1 is returned. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 37

Comparison Functions of the String Handling Library Comparing strings Computer compares numeric ASCII codes of characters in string int strcmp( const char *s1, const char *s2 ); Compares string s1 to s2 Returns a negative number (s1 < s2), zero (s1 == s2), or a positive number (s1 > s2) int strncmp( const char *s1, const char *s2,size_t n ); Compares up to n characters of string s1 to s2 Returns values as above T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 38

Search Functions of the String Handling Library Function prototype char *strchr( const char *s, int c ); size_t strcspn( const char *s1, const char *s2 ); size_t strspn( const char *s1, const char *s2 ); char *strpbrk( const char *s1, const char *s2 ); Function description Locates the first occurrence of character c in string s. If c is found, a pointer to c in s is returned. Otherwise, a NULL pointer is returned. Determines and returns the length of the initial segment of string s1 consisting of characters not contained in string s2. Determines and returns the length of the initial segment of string s1 consisting only of characters contained in string s2. Locates the first occurrence in string s1 of any character in string s2. If a character from string s2 is found, a pointer to the character in string s1 is returned. Otherwise, a NULL pointer is returned. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 39

Search Functions of the String Handling Library. Example Find the first occurrence of a given character in a character string. Return a pointer to the character if found, NULL otherwise. char *FindCharInString(char *str, int ch) { if (str == NULL) return NULL; while (*str!= 0 && *str!= ch) { str++; } if (*str == ch) return str; return NULL; } T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 40

Memory Functions of the String- handling Library Memory Functions Prototypes in <stdlib.h> Manipulate, compare, and search blocks of memory Can manipulate any block of data Pointer parameters are void * Any pointer can be assigned to void *, and vice versa void * cannot be dereferenced Each function receives a size argument specifying the number of bytes (characters) to process T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 41

Memory Functions of the Stringhandling Library Note. In the table below, "object" refers to a block of data Prototype void *memcpy( void *s1, const void *s2, size_t n ) void *memmove( void *s1, const void *s2, size_t n ) Description Copies n characters from the object pointed to by s2 into the object pointed to by s1. A pointer to the resulting object is returned. Copies n characters from the object pointed to by s2 into the object pointed to by s1. The copy is performed as if the characters are first copied from the object pointed to by s2 into a temporary array, and then copied from the temporary array into the object pointed to by s1. A pointer to the resulting object is returned. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 42

Memory Functions of the Stringhandling Library Note. In the table below, "object" refers to a block of data Prototype int memcmp( const void *s1, const void *s2, size_t n ) void *memchr(const void *s, int c, size_t n ) void *memset( void *s, int c, size_t n ) Description Compares the first n characters of the objects pointed to by s1 and s2. The function returns 0, less than 0, or greater than 0 if s1 is equal to, less than or greater than s2, respectively. Locates the first occurrence of c (converted to unsigned char) in the first n characters of the object pointed to by s. If c is found, a pointer to c in the object is returned. Otherwise, 0 is returned. Copies c (converted to unsigned char) into the first n characters of the object pointed to by s. A pointer to the result is returned. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 43

Other Functions of the String Handling Library char *strtok(char *newstring, const char *delimiters) Splits newstring into tokens by making a series of calls to the function strtok. Split occurs when a character in delimiters is encountered The string to be split up is passed as the newstring argument on the first call only. The strtok function uses this to set up some internal state information. Subsequent calls to get additional tokens from the same string are indicated by passing a null pointer as the newstring argument. Calling strtok with another non-null newstring argument reinitializes the state information. T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 44

Other Functions of the String Handling Library char * strdup (const char *s) Copies the null-terminated string s into a newly allocated string. The string is allocated using malloc. If malloc cannot allocate space for the new string, strdup returns a null pointer. Otherwise it returns a pointer to the new string. char *strerror( int errornum ); Creates a system-dependent error message based on errornum Returns a pointer to the string size_t strlen( const char *s ); Returns the number of characters (before ASCII NUL) in string s T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 45

Examples Demo for string handling library T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 46

Reading King: chapters 9, 13 Prata: chapters 9, 11 Deitel: chapters 5, 8 T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 47

Summary Functions Structure of a function Function invocation Parameter passing Functions as parameters Variable scope Functions for character processing T.U. Cluj-Napoca - Computer Programming - lecture 4 - M. Joldoş 48