Chapter 10 strings and pointers
This presentation is the property of its rightful owner.
Sponsored Links
1 / 27

Chapter 10 Strings and Pointers PowerPoint PPT Presentation


  • 56 Views
  • Uploaded on
  • Presentation posted in: General

Chapter 10 Strings and Pointers. Introduction. String Constant Example: printf(“Hello”); “Hello” : a string constant A string constant is a series of characters surrounded by double quotes. How to declare a variable to store string values?

Download Presentation

Chapter 10 Strings 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Chapter 10 strings and pointers

Chapter 10 Strings and Pointers


Introduction

Introduction

  • String Constant

    • Example: printf(“Hello”);

      • “Hello” : a string constant

        • A string constant is a series of characters surrounded by double quotes.

    • How to declare a variable to store string values?

      • Represent a string using a one-dimensional array of type char

        char string[size];

      • Question: The size of a character array is fixed, how can this variable take string constants with different lengths as values?


Outline

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


The end of string sentinel 0

The End-of-String Sentinel \0

  • 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.


The end of string sentinel 01

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


The end of string sentinel 02

The End-of-String Sentinel \0

The size of the string must include the storage needed for the null character \0.

  • Example:

#include <stdio.h>

int main(void){

char w[3];

w[0]='A';

w[1]='B';

w[2]='C';

w[3]='\0';

printf("%s\n", w);

}

overrun the bounds of w


Outline1

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


Using scanf to reading string

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.


Using scanf to reading string1

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


Outline2

Outline

  • String:

    • Representation of a string: \0

    • Using scanf to reading string

    • Initilization of strings

  • String-Handling Functions in the Standard Library

  • Passing Arguments to main() using an array of strings


Initialization of strings

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.


Initialization of strings1

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


Initialization of strings2

Initialization of Strings

  • Difference between

    • initializing an array with a constant string and

    • initializing a pointer with a constant string

#include <stdio.h>

int main(void){

char s[]="abcdefg";

char *p="abcdefg";

printf("%s\n",s);

printf("%s\n",p);

printf("%d\n",sizeof(p));

printf("%d\n",sizeof(s));

}

% a.out

abcdefg

abcdefg

4

8

4 bytes is used to represent a memory address


Initialization of strings3

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.


Chapter 10 strings and pointers

Examples:

Process a string using array notation with subscripts

#include <stdio.h>

int main(void){

char c, name[100];

int i;

printf("Enter a Message:\n");

for (i=0; (c=getchar())!='\n'; ++i)

name[i]=c;

name[i]='\0';

for (i=0; name[i]!='\0'; ++i) {

if(isupper(name[i]))

name[i]=tolower(name[i]);

else if(islower(name[i]))

name[i]=toupper(name[i]);

}

printf("\n%s\n", name);

}

% a.out

Enter a Message:

Have a Good Day!

hAVE A gOOD dAY!


Chapter 10 strings and pointers

Examples:

Process a string using pointer

#include <stdio.h>

int main(void){

char c, name[100], *p;

int i;

printf("Enter a Message:\n");

for (i=0; (c=getchar())!='\n'; ++i)

name[i]=c;

name[i]='\0';

for (p=name; *p!='\0'; ++p) {

if(isupper(*p))

*p=tolower(*p);

else if(islower(*p))

*p=toupper(*p);

}

printf("\n%s\n", name);

}

% a.out

Enter a Message:

Have a Good Day!

hAVE A gOOD dAY!


Chapter 10 strings and pointers

Examples:

Process a string using pointer

#include <stdio.h>

int main(void){

char s[] = "Hello World";

printf("%s\n", s);

printf("%s\n", s+1);

printf("%s\n", s+2);

}

% a.out

Hello World

ello World

llo World


Outline3

Outline

  • String:

  • String-Handling Functions in the Standard Library

  • Passing Arguments to main() using an array of strings


String handling functions in the standard library

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);


String handling functions in the standard library1

String-Handling Functions in the Standard Library

  • char &strcat (char *s1, const char *s2);

    • Concatenates s1 and s2, the result is put in s1. The string s1 is returned.

#include <stdio.h>

#include <string.h>

int main(void){

char s1[100] = "Good Day";

char s2[100] = "Hello World";

strcat(s1, s2);

printf("s2=%s, s1= %s\n", s2, s1);

strcat(s1, s2+6);

printf("s2=%s, s1= %s\n", s2, s1);

}

% a.out

s2=Hello World, s1= Good DayHello World

s2=Hello World, s1= Good DayHello WorldWorld


String handling functions in the standard library2

String-Handling Functions in the Standard Library

  • int strcmp (const char &s1, const char *s2);

    • An integer is returned that is less than, equal to, or greater tan zero, depending on whether s1 is lexicographically less than, equal to, or greater than s2

#include <stdio.h>

#include <string.h>

int main(void){

char s1[100] = "Good Day";

char s2[100] = "Hello World";

printf("%d\n", strcmp(s1, s2));

printf("%d\n", strcmp(s1, s1));

printf("%d\n", strcmp(s2, s1));

}

% a.out

-1

0

1


String handling functions in the standard library3

String-Handling Functions in the Standard Library

  • char *strcpy (char *s1, const char *s2);

    • s2 is copied into s1 until \0 is moved. Whatever exists in s1 is overwritten.

    • It is assumed that s1 has enough space to hold the result.

    • The value s1 is returned.

#include <stdio.h>

#include <string.h>

int main(void){

char s1[100] = "Good Day";

char s2[100] = "Hello World";

strcpy(s1, s2);

printf("s2=%s, s1= %s\n", s2, s1);

strcpy(s1+1, s2);

printf("s2=%s, s1= %s\n", s2, s1);

strcpy(s1+1, s2+6);

printf("s2=%s, s1= %s\n", s2, s1);

}

% a.out

s2=Hello World, s1= Hello World

s2=Hello World, s1= HHello World

s2=Hello World, s1= HWorld


String handling functions in the standard library4

String-Handling Functions in the Standard Library

  • unsigned strlen (const char *s);

    • A count of the number of characters before \0 is returned.

#include <stdio.h>

#include <string.h>

int main(void){

char s1[100] = "Good Day";

printf("%d\n", strlen(s1));

}

% a.out

8


Outline4

Outline

  • String:

  • String-Handling Functions in the Standard Library

  • Passing Arguments to main() using an array of strings


Passing arguments to main

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


Passing arguments to main1

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


Summary

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


  • Login