Representing strings and string i o
This presentation is the property of its rightful owner.
Sponsored Links
1 / 27

Representing Strings and String I/O PowerPoint PPT Presentation


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

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 a string literal, is anything enclosed in double quotation marks . p rintf (“Hello world”);

Download Presentation

Representing Strings and String I/O

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


Representing strings and string i o

Representing Strings and String I/O


Introduction

Introduction

  • A string is a sequence of characters and is treated as a single data item.

  • A string constant, also termed a string literal, is anything enclosed in double quotation marks.

    printf(“Hello world”);

  • To use a double quotation mark within a string, precede the quotation mark with a backslash (\)

    printf(“\”Run, Spot, run!\” exclaimed Dick.\n”);


Introduction1

Introduction

  • C standard library provides many functions specifically designed to work with strings.

    • Reading and writing strings.

    • Combining strings together.

    • Copying one string to another.

    • Comparing strings for equality.

    • Extracting a portion of a string


Declaring and initializing string variables

Declaring and initializing string variables

C does not support strings as a data type

The only support for strings in the C is that the compiler will translate a quoted string constant into a null-terminated string, which is stored in static memory.

The general form of declaration of a string variable is

charstring_name[size];

Examples:

charcity[10];

char name[30];

A string is a char array terminated with a null character (\0).

char city[9] = ”Seoul”;

char city[9] = {‘S’, ‘e’, ‘o’, ‘u’, ‘l’, ‘\0’};

string length

[] array notation


Declaring and initializing string variables1

Declaring and initializing string variables

  • C permits us to initialize a character array without specifying the number of elements.

    char string [] = {‘G’, ‘O’, ‘O’, ‘D’, ‘\0’};

  • The string can be declared with much larger size then the string size In the initializer.

    charstr[10] = “GOOD”.

Set to zeros


Reading strings from terminal

Reading strings from terminal

  • The familiar input function scanffunction can be used with %s format specifier.

    char city[10];

    scanf(“%s”, city);

  • scanf()terminates its input on the first white space it finds.

  • white space include:

    • blanks,

    • tabs

    • new lines.

  • If the following line of text is typed in at the terminal,

    NEW YORK

    Then only “NEW” will be read into the array address.

The ampersand (&) is not required before the variable name. Because city is already address in memory where string is stored.


Writing strings to screen

Writing strings to screen

  • The format %s in the printffunction can be used to display an array of characters that is terminated by the null character.

    printf(“%s”, name);

  • We can specify the precision with which the array is displayed.

    printf(“%10.4s”, name);

    or

    printf(“%-10.4s”, name);

%10.4 indicates that the first four characters are to be printed in a field width of 10 columns.

%-10.4, the string will be printed left-justified


Example

Example

  • The printfsupport feature that allows for variable field width.

    printf(“%*.*s\n”, w, d, string)

  • printfthe first d characters of the string in the field width of w.


Alternative to printf

Alternative to printf()

  • We can use putchar() to output the values of a string.

    charch = ‘A’;

    putchar (ch).

  • We can use this function repeatedly to print out a string.

    char name [6] = “PARIS”;

    for (I = 0; I < 5; i++)

    putchar(name[i]);

    putchar(‘\n’)

  • Another convenient way of printing string values is to use the function puts.

    puts (str);


Example1

Example


Each string has an address

Each string has an address

Very important example!

  • The %s format should print the string We.

  • The %p format produces an address. So if the phrase "are" is an address, then %p should print the address of the first character in the string.

Character located at the address “space travellers”

Address of “are”


Missing operators

Missing Operators

  • There is no string assignment operators.

  • There are not string comparison operators.

  • There are not string combination operators.

  • However, there are built-in functions to do this common tasks.

String functions prototypes defined in

<string.h>


Built in string functions

Built-in String Functions

  • String assignment. There is no ‘=‘ for string but there isstrcpy( destination, source )char name[ 25 ]; /* contains nothing */strcpy( name, “Hilton” ); /* name now contains “Hilton” */

  • String comparison. There is no != for string but there isstrcmp( strA, strB );

    • If strA comes after strB, the function returns a positive number.

    • Is strB comes last, the function returns a negative number.

    • If strA and strB are the same thing, the function returns a zero.

      result = strcmp( “CMSC”, “IFSM” ); /* negative */

      result = strcmp( “IFSM”, “CMSC” ); /* positive */

      result = strcmp( “CMSC”, “CMSC” ); /* zero */


Built in string functions cont d

Built-in String Functions (cont’d)

  • String combination:strcat( destination, source )

    • The source is not changed.

    • The destination contain exactly what it had before plus what was in the source. Nothing else is added. NOTE: If you are combining a first name and last name for a full name, you must use another strcat to add the space between them:strcpy( fullName, firstName);strcat( fullName, “ “ );strcat( fullName, lastName );


Built in string functions cont d1

Built-in String Functions (cont’d)

  • Extracting words (tokens) from a string:

    /* get the first token (delimited by a blank) */

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

    /* This is more useful after you learn to use pointers. */


Built in string functions cont d2

Built-in String Functions (cont’d)

  • What if I want to get a menu choice, that is the numbers 1 to 4 or the char ‘q’? Use getchar( ) to get the menu choice, check for ‘q’ and if it is not, then convert it to a number.

    /* convert a string (ASCII) to an integer */

    printf( "%d\n", atoi( "1234" ) );

    /* convert a string (ASCII) to a float */

    printf( "%f\n", atof( "1234.5678" ) );

  • How long is the data in the string (not counting the null terminator)?

    stringSize = strlen( strA );


String libraries

String Libraries

#include files:

#include <stdlib.h> /* needed by atoi( ) and atof( ) */

#include <string.h> /* needed by str...( ) functions */


Sample program

Sample Program


Sample program1

Sample Program


Sample program output

Sample Program Output

string a is >Excellence<

After strcpy(b, a), string b is now >Excellence<

=============

String b = >Excellence< and is 10 characters long

After strcat(b, " "), string b = >Excellence < and is 11 characters long

After strcat(b, a), string b = >Excellence Excellence< and is 21 characters long

strtok( b, " " ) gives Excellence


Sample program output cont d

Sample Program Output (cont’d)

=============

string a = Excellence string c = Failure

strcmp( a, c ) gives -1

strcmp( c, a ) gives 1

strcmp( a, "Excellence" gives 0

After strcmp( "CMSC", "IFSM" ), result is -1

After strcmp( "IFSM", "CMSC" ), result is 1

After strcmp( "CMSC", "CMSC" ), result is 0


Sample program output cont d1

Sample Program Output (cont’d)

=============

atoi( "1234”) gives 1234

atof( "1234.5678" ) gives 1234.567800


Other string functions

Other String Functions

The statement copies first n characters of the source string s2 into the target string s1.

  • Since the first ncharacters may not include the terminating null character, we have to place it explicitly in the 6th position of s2

    s1[n+1] = ‘\0’;

    This compares the left-most n characters of s1 to s2 and returns.

    • 0 if the are equal;

    • Negative number if s1 sub-string is less than s2; and

    • Positive number , otherwise.


Other string functions1

Other String Functions

  • Concatenate the left-most n characters of s2 to the end of s1.

    s1

    s2

    after(s1, s2, 6)

  • s1 is a string to search within.

  • s2 is the substring that you want to find.


Array versus pointer

Array Versus Pointer*

You can use pointer notation to set up a string. const char *m3 = "\nEnough about me -- what's your name?"; This declaration is very nearly the same as this one:char m3[] = "\nEnough about me -- what's your name?"

In short, initializing the array copies a string from static storage to the array, whereas initializing the pointer merely copies the address of the string.

char heart[] = "I love Tillie!";

char *head = "I love Millie!";

The difference is that the array name heart is a constant, but the pointer head is a variable.

head = heart; /* head now points to the array heart */

heart = head; /* illegal construction */


Example reverse characters in an input string

Example: reverse characters in an input string


Passing parameter to the main function

Passing parameter to the main function


  • Login