Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Review of Chapter 10: String and Pointers. 2 Outline  String:  Representation of a string: \0  Using scanf to read in string  Initilization of strings.

Similar presentations


Presentation on theme: "1 Review of Chapter 10: String and Pointers. 2 Outline  String:  Representation of a string: \0  Using scanf to read in string  Initilization of strings."— Presentation transcript:

1 1 Review of Chapter 10: String and Pointers

2 2 Outline  String:  Representation of a string: \0  Using scanf to read in string  Initilization of strings  String-Handling Functions in the Standard Library  Passing Arguments to main() using an array of strings

3 3 String  A string is  a one-dimensional array of type char. char w[100];  character value \0 is used to terminate a string strings have a variable length delimited by the null character \0 but with a maximum length determined by the size of the character array The size of the string must include the storage needed for the null character \0.

4 4 The End-of-String Sentinel \0  Example: #include int main(void){ char w[100]; w[0]='A'; w[1]='B'; w[2]='C'; w[3]='\0'; printf("%s\n", w); } % a.out ABC #include int main(void){ char w[100]; w[0]='A'; w[1]='B'; w[2]='C'; w[3]='\0'; w[4]=‘D'; printf("%s\n", w); } % a.out ABC the null character value \0 is used to terminate a string

5 5 Using scanf to reading string  Using scanf to read in a string  scanf(“%s”, w); read in non-white space characters opositions the input stream to an initial non-white space character oread in non-white space characters oThe process stops when a white space character or EOF is encountered. a null character is placed in memory to end the string.

6 6 Using scanf to reading string #include int main(void){ char w[10]; printf("Enter strings\n", w); scanf("%s", w); printf("%s\n", w); } % a.out Enter strings Hello % a.out Enter strings Hello World Hello scanf(”%s”,w);  read in non-white space characters positions the input stream to an initial non-white space character read in non-white space characters The process stops when a white space character or EOF is encountered.  a null character is placed in memory to end the string.

7 7 Initialization of Strings  Initialization of Strings  Example: initialize a string variable as “abc” char s[] = {‘a’, ‘b’, ‘c’, ‘\0’}; char s[]=“abc”; #include int main(void){ char w[]="abc"; printf("%d\n", sizeof(w)); } % a.out 4 The size of the string must include the storage needed for the null character \0.

8 8 Initialization of Strings  A pointer to char can also be initialized with a constant string.  A string constant is stored in memory by the compiler.  the pointer is assigned the address of the constant string in memory.  Example: char p* = “abc”; #include int main(void){ char *p="abc"; printf("%s\n",p); } % a.out abc

9 9 Initialization of Strings  Difference between  initializing an array with a constant string the array contains the individual characters followed by the null character  initializing a pointer with a constant string A string constant is stored in memory by the compiler. the pointer is assigned the address of the constant string in memory.

10 10 String-Handling Functions in the Standard Library  String-handling functions:  Function prototypes are provided by string.h #include  Functions: Concatenate two strings: strcat (s1, s2); Compare two strings: int strcmp (s1, s2); Copy s2 to s1: strcpy (s1, s2); Length of a string: strlen (s);

11 11 Outline  String:  Representation of a string: \0  Using scanf to read in string  Initilization of strings  String-Handling Functions in the Standard Library  Passing Arguments to main() using an array of strings

12 12 Passing Arguments to main()  Unix Commands, take arguments  %pico q1.c  %gcc q12.c prime.c  %gcc –lm q12.c prime.c  In our project, write code, compile, execute a.out  %a.out  Can we pass arguments to our program?  Can we pass arguments to the main() function?

13 13 Passing Arguments to main()  How main() communicates with the operating system?  int main(void)  int main( int argc, char *argv[]) argc: the number of the command line arguments argv: an array of strings

14 14 Passing Arguments to main() #include int main(int argc, char *argv[]){ int i; printf("%d \n", argc); for (i=0; i < argc; ++ i) printf("%s\n", argv[i]); } %a.out Hello World 3 a.out Hello World argc: the number of the command line arguments argv: an array of strings

15 15 Summary  String:  Representing a string using an array of characters  \0 is used to terminated a string  strings have a variable length delimited by the null character \0 but with a maximum length determined by the size of the character array  initialization of strings  String-Handling Functions in the Standard Library  Passing Arguments to main()  argc: number of arguments  argv: an array of strings

16 16 End of Chapter 10: String and Pointers Read 10.1 – 10.10

17 17 Chapter 12 Structures and ADTs

18 18 Introduction  Programming Questions:  How to represent a date? Three components are required: oday, month, year  Three variables can be used to represent a date. oint day, month, year; /* date */

19 19 Introduction  Programming Questions:  How to represent a student record? components: olast_name, first_name; oUIN oscores of six assignments; oscores of three midterms and final; Six variables are required to represent a student record. ochar[20] last_name; ochar[20] first_name; oint UIN; oint assignment[6], midterm[3], final;

20 20 Introduction represent a student record.  char[20] last_name;  char[20] first_name;  int UIN;  int assignment[6], midterm[3], final; represent a date.  int day, month, year; Can we represent a collection of components of possibly different types by a single variable? A derived date type — structure  Structure is a means of aggregating a collection of data items of possibly different types.  components are individually named. These components are called members.

21 21 Chapter 12: Structures and ADTs  Outline  Declaring Structures  Accessing a Member in a structure variable  Initialization of Structures

22 22 Declaring Structures  How to declare a structure data type?  Example: a structure type to represent a date: Components: day, month, year struct date_str{ int day; int month; int year; };  This declaration creates the derived date type struct date_str. members of the structure structure tag name

23 23 Declaring Structures  How to declare variables of a structure type?  Declare variables in declaration of a structure type struct date_str{ int day; int month; int year; } date1, date2;  Declare variables “struct str_name variable_list;” struct date_str{ int day; int month; int year; }; struct date_str date3, date4;

24 24 #include int main(void){ struct date_str{ int day; int month; int year; } date1, date2; printf("Input data in format DD/MM/YYYY:"); scanf("%d/%d/%d", &date1.day, &date1.month, &date1.year); printf("Input data in format DD/MM/YYYY:"); scanf("%d/%d/%d", &date2.day, &date2.month, &date2.year); } struct date_str{ int day; int month; int year; }; struct date_str date1; struct date_str date2;

25 25 #include int main(void){ struct student_str{ char last_name[15]; char first_name[15]; int UIN; int assign[6]; int midterm[3]; int final; } students[110]; int i; printf("Input last name, first name and UIN for each students:\n"); for (i=0; i< 110; i++){ scanf("%s", students[i].last_name); scanf("%s", students[i].first_name); scanf("%d", &students[i].UIN); }

26 26 Declaring Structures  Summary:  Declare a structure type  Declare variables of a structure type  The declaration of a structure type creates a derived date type. No storage is allocated upon this declaration Storage is allocated when variables are declared of a structure type.

27 27 Chapter 12: Structures and ADTs  Outline  Declaring Structures  Accessing a Member in a structure variable  Initialization of Structures

28 28 Access a member  How to access a member?  member operator “.” structure_variable.member_name  Example: struct date_str{ int day; int month; int year; } date1, date2; date1.year = 2000; data2.year= 2005; date1.day = date2.day = 10; date1.month = date2.month = 11;

29 29 #include int main(void){ struct date_str{ int day; int month; int year; } date1, date2; printf("Input data in format DD/MM/YYYY:"); scanf("%d/%d/%d", &date1.day, &date1.month, &date1.year); printf("Input data in format DD/MM/YYYY:"); scanf("%d/%d/%d", &date2.day, &date2.month, &date2.year); }

30 30 #include int main(void){ struct student_str{ char last_name[15]; char first_name[15]; int UIN; int assign[6]; int midterm[3]; int final; } students[110]; int i; printf("Input last name, first name and UIN for each students:\n"); for (i=0; i< 110; i++){ scanf("%s", students[i].last_name); scanf("%s", students[i].first_name); scanf("%d", &students[i].UIN); }

31 31 Accessing a Member  Question:  Given the following declaration: struct date_str{ int day; int month; int year; } date1; struct date_str *pDate = &date1; How to access the members of the variable to which pDate points? (*pDate).day

32 32 Accessing a Member  How to access a member?  structure pointer operator -> access the members of a structure via a pointer. pointer_to_structure -> member_name  (*pointer_to_structure).member_name  Example: struct date_str *pDate = &date1; (*pDate).day  pDate->day

33 33 #include struct date_str{ int day; int month; int year; }; void getDate(struct date_str *pDate); void printDate(struct date_str *pDate); #include "date.h" int main(void){ struct date_str date1, date2; getDate(&date1); getDate(&date2); printDate(&date1); printDate(&date2); } date.h #include "date.h“ void getDate(struct date_str *pDate){ printf("Input a date in DD/MM/YYYY:"); scanf("%d/%d/%d", &(pDate->day), &(pDate->month), &(pDate->year)); } void printDate(struct date_str *pDate){ printf("The input date is: %d/%d/%d\n", pDate->day, pDate->month, pDate->year); } date.c gcc date.c main.c main.c

34 34  Notes  The member name must be unique within the specified structure struct name_str{ char[15] last_name; char[15] first_name; }; struct name_str{ char[15] name; }; X

35 35  Notes  Can we have two members having the same name in different structures? Since the member must always be accessed through a unique structure variable identifier,  there is no confusion

36 36 Accessing a Member  Summary  member operator “.” structure_variable.member_name  structure pointer operator “ -> ” access the members of a structure via a pointer. pointer_to_structure -> member_name  (*pointer_to_structure).member_name

37 37 Chapter 12: Structures and ADTs  Outline  Declaring Structures  Accessing a Member in a structure variable  Initialization of Structures

38 38 Initialization of Structures  Initialization  A structure variable can be followed by an equal sign = and a list of constants contained within braces  Example: struct date_str{ int day; int month; int year; }; struct date_str date={12, 12, 2000};

39 39 Initialization of Structures  Initialization  If there are not enough values, the remaining members are assigned the value zero.  Example: struct student_str{ char last_name[15]; char first_name[15]; int UIN; int assign[6]; int midterm[3]; int final; } strcut student_str s1={“Bush”, “Jenny”, 80002211};

40 40 Chapter 12: Structures and ADTs  Summary  Declaring Structures  Accessing a Member in a structure variable member operator “.”: ostructure_variable.member_name structure pointer operator “ -> ” : opointer_to_structure -> member_name  Initialization of Structures A structure variable can be followed by oan equal sign = and oa list of constants contained within braces oIf there are not enough values, the remaining members are assigned the value zero. Read Chapter 12.1 – 12. 6


Download ppt "1 Review of Chapter 10: String and Pointers. 2 Outline  String:  Representation of a string: \0  Using scanf to read in string  Initilization of strings."

Similar presentations


Ads by Google