1 / 40

Review of Chapter 10: String and Pointers

Review of Chapter 10: String and Pointers. Outline. String: Representation of a string: 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. String. A string is

myrrh
Télécharger la présentation

Review of Chapter 10: String and Pointers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • String-Handling Functions in the Standard Library • Passing Arguments to main() using an array of strings

  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. The End-of-String Sentinel \0 the null character value \0 is used to terminate a string • Example: #include <stdio.h> 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); } #include <stdio.h> 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 % a.out ABC

  5. Using scanf to reading string • Using scanf to read in a string • 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.

  6. Using scanf to reading string 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. #include <stdio.h> int main(void){ char w[10]; printf("Enter strings\n", w); scanf("%s", w); printf("%s\n", w); } % a.out Enter strings Hello Hello % a.out Enter strings Hello World Hello

  7. Initialization of Strings • Initialization of Strings • Example: initialize a string variable as “abc” • char s[] = {‘a’, ‘b’, ‘c’, ‘\0’}; • char s[]=“abc”; #include <stdio.h> 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. 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 <stdio.h> int main(void){ char *p="abc"; printf("%s\n",p); } % a.out abc

  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. String-Handling Functions in the Standard Library • String-handling functions: • Function prototypes are provided by string.h • #include <string.h> • 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. 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. 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. 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. Passing Arguments to main() #include <stdio.h> 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. 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. End of Chapter 10: String and PointersRead 10.1 – 10.10

  17. Chapter 12Structures and ADTs

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

  19. Introduction • Programming Questions: • How to represent a student record? • components: • last_name, first_name; • UIN • scores of six assignments; • scores of three midterms and final; • Six variables are required to represent a student record. • char[20] last_name; • char[20] first_name; • int UIN; • int assignment[6], midterm[3], final;

  20. Introduction • represent a date. • int day, month, year; represent a student record. • char[20] last_name; • char[20] first_name; • int UIN; • int assignment[6], midterm[3], final; 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. Chapter 12: Structures and ADTs • Outline • Declaring Structures • Accessing a Member in a structure variable • Initialization of Structures

  22. members of the structure 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. structure tag name

  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. #include <stdio.h> 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. #include <stdio.h> 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. 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. Chapter 12: Structures and ADTs • Outline • Declaring Structures • Accessing a Member in a structure variable • Initialization of Structures

  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. #include <stdio.h> 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. #include <stdio.h> 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. 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. 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. date.c #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); } #include <stdio.h> 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); } main.c date.h gcc date.c main.c

  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; char[15] name; }; X

  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. 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. Chapter 12: Structures and ADTs • Outline • Declaring Structures • Accessing a Member in a structure variable • Initialization of Structures

  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. 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. Chapter 12: Structures and ADTs • Summary • Declaring Structures • Accessing a Member in a structure variable • member operator “.”: • structure_variable.member_name • structure pointer operator “ -> ” : • pointer_to_structure -> member_name • Initialization of Structures • A structure variable can be followed by • an equal sign = and • a list of constants contained within braces • If there are not enough values, the remaining members are assigned the value zero. Read Chapter 12.1 – 12. 6

More Related