1 C Basics. 2 The C Language Spirit Made by professional programmers for professional programmers Very flexible, very efficient, very liberal Does not.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

Numerical Recipes The Art of Scientific Computing (with some applications in computational physics)
Overview of programming in C C is a fast, efficient, flexible programming language Paradigm: C is procedural (like Fortran, Pascal), not object oriented.
 A string is an array of characters.  Strings must have a 0 or null character after the last character to show where the string ends.  The null character.
Lectures 10 & 11.
 2003 Prentice Hall, Inc. All rights reserved Fundamentals of Characters and Strings Character constant –Integer value represented as character.
Strings.
1 Chapter 10 Strings and Pointers. 2 Introduction  String Constant  Example: printf(“Hello”); “Hello” : a string constant oA string constant is a series.
Lecture 09 Strings, IDEs. METU Dept. of Computer Eng. Summer 2002 Ceng230 - Section 01 Introduction To C Programming by Ahmet Sacan Mon July 29, 2002.
Character String Manipulation. Overview Character string functions sscanf() function sprintf() function.
Lecture 9. Lecture 9: Outline Strings [Kochan, chap. 10] –Character Arrays/ Character Strings –Initializing Character Strings. The null string. –Escape.
Lecture 20 Arrays and Strings
What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the.
Strings CS240 Dick Steflik. What is a string A null terminated array of characters: char thisIsAString[10]; \0 The “\0” (null character)
 2000 Prentice Hall, Inc. All rights reserved Fundamentals of Strings and Characters String declarations –Declare as a character array or a variable.
ECE Application Programming Instructor: Dr. Michael Geiger Spring 2012 Lecture 31: PE5.
Current Assignments Homework 5 will be available tomorrow and is due on Sunday. Arrays and Pointers Project 2 due tonight by midnight. Exam 2 on Monday.
Chapter Fourteen Strings Revisited. Strings A string is an array of characters A string is a pointer to a sequence of characters A string is a complete.
Pointers in C Rohit Khokher
1 CSSE 332 Preprocessor, Array and Strings. 2 External library files libname.a or libname.so Special functionality is provided in the form of external.
To remind us We finished the last day by introducing If statements Their structure was:::::::::
Declaring Arrays Declare an array of 10 elements: int nums[10]; Best practice: #define SIZE 10 int nums[SIZE]; // cannot be int[SIZE] nums; C99: int nums[someVariable]
CSSE221: Software Dev. Honors Day 28 Announcements Announcements Simulation grades coming back Simulation grades coming back All C Projects due Friday.
CS Nov 2006 C-strings.
C Arrays and Pointers In Java, pointers are easy to deal with –In fact, there is little that can go wrong in Java since pointer access is done for you.
An Introduction to C Programming Geb Thomas. Learning Objectives Learn how to write and compile a C program Learn what C libraries are Understand the.
Strings in C. Strings are Character Arrays Strings in C are simply arrays of characters. – Example:char s [10]; This is a ten (10) element array that.
Introduction to C programming
Chapter 9 Character Strings 9.1 Character String Constants A character string constant is a sequence of characters enclosed in double quotation mark. Examples.
CS 450 MPX P ROJECT A Quick C Review. P OINTERS AND ADDRESSES IN C Check Manual I2 from Dr. Mooney’s website for a complete review of C topics you will.
C What you Know* Objective: To introduce some of the features of C. This assumes that you are familiar with C++ or java and concentrates on the features.
Character Arrays Based on the original work by Dr. Roger deBry Version 1.0.
1 C Basics. 2 The C Language Spirit Made by professional programmers for professional programmers Very flexible, very efficient, very liberal Does not.
 2008 Pearson Education, Inc. All rights reserved Pointers and Pointer-Based Strings.
Lecture 22: Reviews for Exam 2. Functions Arrays Pointers Strings C Files.
C Lab 1 Introduction to C. Basics of C Developed by Dennis Ritchie in the 1970s. Maps very easily to machine instructions. Even allows inline assembly!
Lexical Elements, Operators, and the C Cystem. C overview recap functions –structured programming –return value is typed –arguments(parameters) pointers.
Dale Roberts Department of Computer and Information Science, School of Science, IUPUI C-Style Strings Strings and String Functions Dale Roberts, Lecturer.
Copyright ©: Nahrstedt, Angrave, Abdelzaher1 C Basics Tarek Abdelzaher and Vikram Adve.
5-1 Embedded Systems C Programming Language Review and Dissection III Lecture 5.
Representing Strings and String I/O. Introduction A string is a sequence of characters and is treated as a single data item. A string constant, also termed.
CSC141- Introduction to Computer programming Teacher: AHMED MUMTAZ MUSTEHSAN Lecture – 21 Thanks for Lecture Slides:
Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:
Computer Organization and Design Pointers, Arrays and Strings in C Montek Singh Sep 18, 2015 Lab 5 supplement.
Copyright ©: University of Illinois CS 241 Staff1 C Survival Guide.
Copyright ©: Nahrstedt, Angrave, Abdelzaher1 C Basics Tarek Abdelzaher and Vikram Adve.
 2003 Prentice Hall, Inc. All rights reserved. 1 Chapter 5 - Pointers and Strings Outline 5.1 Introduction 5.2 Pointer Variable Declarations and Initialization.
 2003 Prentice Hall, Inc. All rights reserved. 11 Fundamentals of Characters and Strings Character constant –Integer value of a character –Single quotes.
5.6 String Processing Part 2. Sprintf(destnvar,…..regularprintf) Write formatted data to string Same as printf except the output is put in variable. A.
Programming in C Arrays, Structs and Strings. 7/28/092 Arrays An array is a collection of individual data elements that is:An array is a collection of.
C++ Programming Lecture 19 Strings The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
Strings, Pointers and Tools
CMSC 104, Version 8/061L25Strings.ppt Strings Topics String Libraries String Operations Sample Program Reading Sections
1 Recall that... char str [ 8 ]; str is the base address of the array. We say str is a pointer because its value is an address. It is a pointer constant.
1 Chapter 15-1 Pointers, Dynamic Data, and Reference Types Dale/Weems.
1 Pointers: Parameter Passing and Return. 2 Passing Pointers to a Function Pointers are often passed to a function as arguments  Allows data items within.
In C programming, one of the frequently arising problem is to handle similar types of data. For example: If the user want to store marks of 100 students.
1 Arrays and Pointers The name of an array is a pointer constant to the first element. Because the array’s name is a pointer constant, its value cannot.
C is a high level language (HLL)
Strings. String Literals String literals are enclosed in double quotes: "Put a disk in drive A, then press any key to continue\n“ A string literal may.
ECE 103 Engineering Programming Chapter 29 C Strings, Part 2 Herbert G. Mayer, PSU CS Status 7/30/2014 Initial content copied verbatim from ECE 103 material.
Principles of Programming - NI Chapter 10: Character & String : In this chapter, you’ll learn about; Fundamentals of Strings and Characters The difference.
1 Memory, Arrays & Pointers. Memory 2 int main() { char c; int i,j; double x; cijx.
Arrays and Pointers (part 1) CSE 2031 Fall July 2016.
Computer Organization and Design Pointers, Arrays and Strings in C
C programming language
Programming Languages and Paradigms
Lexical Elements, Operators, and the C Cystem
Lexical Elements, Operators, and the C Cystem
Introduction to C CS 3410.
Presentation transcript:

1 C Basics

2 The C Language Spirit Made by professional programmers for professional programmers Very flexible, very efficient, very liberal Does not protect the programmers from themselves. Rationale: programmers know what they are doing even UNIX and most “serious” system software (servers, compilers, etc) are written in C. Can do everything Java and C++ can. It’ll just look uglier in C

3 Compiler gcc See manual “man” for options man gcc Preprocessor Compiler Linker C89 versus C99 C99: Mix variable declarations and code make – a compilation utility Google for make files (or GNU Make)

4 Programming in C C = Variables + Instructions

5 Programming in C C = Variables + Instructions int char float string … pointer array

6 Programming in C C = Variables + Instructions int char float string … pointer array printf/scanf assignment if switch … for while

7 10,000 10,002 10,008 10,010 10,012 … Variables Value1 Value2 Value3 Value4 Value5 x y z p d Memory Address Name Value

8 10,000 10,002 10,008 10,010 10,012 … The “&” Operator: Reads “Address of” Value1 Value2 Value3 Value4 Value5 x y z p d Name Value &y

9 10,000 10,002 10,008 10,010 10,012 … Pointers Value1 Value2 Value3 10,002 Value5 x y z p d Name Value A pointer is a variable whose value is the address of another

10 10,000 10,002 10,008 10,010 10,012 … The “*” Operator Reads “Variable pointed to by” Value1 Value2 Value3 10,002 Value5 x y z p d Name Value A pointer is a variable whose value is the address of another *P

11 What is the Output? main() { int *p, q, x; x=10; p=&x; *p=x+1; q=x; printf (“Q = %d\n“, q); }

12 What is the Output? main() { int *p, q, x; x=10; p=&x; *p=x+1; q=x; printf (“Q = %d\n“, q); } @*%^ p q x

13 What is the Output? main() { int *p, q, x; x=10; p=&x; *p=x+1; q=x; printf (“Q = %d\n“, q); } 10 p q x

14 What is the Output? main() { int *p, q, x; x=10; p=&x; *p=x+1; q=x; printf (“Q = %d\n“, q); } 10 p q x

15 What is the Output? main() { int *p, q, x; x=10; p=&x; *p=x+1; q=x; printf (“Q = %d\n“, q); } 11 p q x

16 What is the Output? main() { int *p, q, x; x=10; p=&x; *p=x+1; q=x; printf (“Q = %d\n“, q); } 11 p q x

17 Cardinal Rule: Must Initialize Pointers before Using them int *p; *p = 10; BAD

18 Cardinal Rule: Must Initialize Pointers before Using them int *p; *p = 10; p ?? Pointing somewhere random

19 Cardinal Rule: Must Initialize Pointers before Using them int *p; *p = 10; p 10

20 How to Initialize Pointers

21 How to Initialize Pointers Set pointer equal to location of known variable int *p; int x; … p=&x;

22 How to Initialize Pointers Use malloc() int *p; … p=(int*) malloc (sizeof (int));

23 How to Initialize Pointers Create an Array int p[10]; Same as: int *p; p=(int*) malloc (10*sizeof (int));

24 Arrays int p[5]; p[0] p[1] p[2] p[3] p[4] Name of array (is a pointer) p Shorthand: *(p+1) is called p[1] *(p+2) is called p[2] etc..

25 Example int y[4]; y[1]=6; y[2]=2; 6 2 y[0] y[1] y[2] y[3] y

26 Array Name as Pointer What’s the difference between the examples below: Example 1: int z[8]; int *q; q=z; Example 2: int z[8]; int *q; q=&z[0];

27 Array Name as Pointer What’s the difference between the examples below: Example 1: int z[8]; int *q; q=z; Example 2: int z[8]; int *q; q=&z[0]; NOTHING!! x (the array name) is a pointer to the beginning of the array, which is &x[0]

28 Example: How much is y at the end: int y, x, *p; x = 20; *p = 10; y = x + *p;

29 Example: How much is y at the end: int y, x, *p; x = 20; *p = 10; y = x + *p; BAD!! Dereferencing an unitialized pointer will likely segfault or overwrite something! Segfault = unauthorized memory access

30 Question: What’s the difference between int* q; int q[5]; What’s wrong with: int ptr[2]; ptr[1] = 1; ptr[2] = 2;

31 Question: What is the value of b[2] at the end? int b[3]; int* q; b[0]=48; b[1]=113; b[2]=1; q=b; *(q+1)=2; b[2]=*b b[2]=b[2]+b[1];

32 Strings (Null-terminated Arrays of Char) Example char s[5]; Strings are arrays that contain the string characters followed by a “Null” character to indicate end of string. Do not forget to leave room for the null character s[0] s[1] s[2] s[3] s[4] s

33 Conventions Strings “string” “c” Character ‘c’

34 String Operations strcpy strlen srtcat strcmp

35 strcpy, strlen Syntax: strcpy(ptr1, ptr2); where ptr1 and ptr2 are pointers to char value = strlen(ptr); where value is an integer and ptr is a pointer to char Example: int len; char str[15]; strcpy (str, "Hello, world!"); len = strlen(str);

36 strcpy, strlen What’s wrong with char str[5]; strcpy (str, "Hello");

37 strncpy Syntax: strncpy(ptr1, ptr2, num); where ptr1 and ptr2 are pointers to char num is the number of characters to be copied Example: int len; char str1[15], str2[15]; strcpy (str1, "Hello, world!"); strncpy (str2, str1, 5);

38 strncpy Syntax: strncpy(ptr1, ptr2, num); where ptr1 and ptr2 are pointers to char num is the number of characters to be copied Example: int len; char str1[15], str2[15]; strcpy (str1, "Hello, world!"); strncpy (str2, str1, 5); Caution: strncpy blindly copies the characters. It does not voluntarily append the string-terminating null character.

39 strcat Syntax: strcat(ptr1, ptr2); where ptr1 and ptr2 are pointers to char Concatenates the two null terminates strings yielding one string (pointed to by ptr1). char S[25] = "world!"; char D[25] = "Hello, "; strcat(D, S);

40 strcat Example What’s wrong with: char S[25] = "world!"; strcat(“Hello, ”, S);

41 strcmp Syntax: diff = strcmp(ptr1, ptr2); where diff is an integer and ptr1 and ptr2 are pointers to char Returns zero if strings are identical int diff; char s1[25] = "pat"; char s2[25] = "pet"; diff = strcmp(s1, s2);

42 Math: Increment and Decrement Operators Example 1: int x, y, z, w; y=10; w=2; x=++y; z=--w; Example 2: int x, y; y=10; w=2; x=y++; z=w--;

43 Math: Increment and Decrement Operators Example 1: int x, y, z, w; y=10; w=2; x=++y; z=--w; Example 2: int x, y; y=10; w=2; x=y++; z=w--; First increment/decrement then assign result x is11, z is 1 First assign then increment/decrement x is 10, z is 2

44 Math: Increment and Decrement Operators on Pointers Example 1: int a[2]; int number1, number2, *p; a[0]=1; a[1]=10; a[2]=100; p=a; number1 = *p++; number2 = *p; What will number1 and number2 be at the end?

45 Math: Increment and Decrement Operators on Pointers Example 1: int a[2]; int number1, number2, *p; a[0]=1; a[1]=10; a[2]=100; p=a; number1 = *p++; number2 = *p; What will number1 and number2 be at the end? Hint: ++ increments pointer p not variable *p

46 Logic: Relational (Condition) Operators == equal to != not equal to > greater than < less than >= greater than or equal to <= less than or equal to

47 Logic Example if (a == b) printf (“Equal.”); else printf (“Not Equal.”); Question: what will happen if I replaced the above with: if (a = b) printf (“Equal.”); else printf (“Not Equal.”);