Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.