Strings

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Strings as PDF for free.

More details

  • Words: 1,131
  • Pages: 22
Strings Topics • String Libraries • String Operations • Sample Program

Reading • Sections 8.1 - 8.7 CMSC 104, Version 8/06

L25Strings.ppt

String • A string is a character array that has a marker to

show where the data ends, when the array is larger than the data. char firstname[ 50 ] = “Sue”;

• The array firstname is 50 characters long, but the

data is only four characters long. You must count the marker. • The marker is character that is set to the number zero. (Sometimes called a null terminator.) CMSC 104, Version 8/06

L25Strings.ppt

Array Constraint • There are now built-in operators to

manipulate arrays, except to initialize them when you declare the array: char firstname[ 50 ] = “Sue”;

CMSC 104, Version 8/06

L25Strings.ppt

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.

CMSC 104, Version 8/06

L25Strings.ppt

Built-in String Functions • String assignment:

strcpy( destination, source ) char name[ 25 ]; /* contains nothing */ strcpy( name, “Hilton” ); /* name now contains “Hilton” */

CMSC 104, Version 8/06

L25Strings.ppt

Built-in String Functions (cont’d) • String comparison:

strcmp( strA, strB ); If strA comes after strB, the function returns a positive number. o Is strB comes last, the function returns a negative number. o 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( “CSMC”, “CMSC” ); /* zero */ o

CMSC 104, Version 8/06

L25Strings.ppt

Built-in String Functions (cont’d) • String combination:

strcat( destination, source ) o o

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

CMSC 104, Version 8/06

L25Strings.ppt

Built-in String Functions (cont’d) • Extracting words (tokens) from a string: /* get the first token (delimited by a blank) */ printf( "%s\n", strtok( b, " " ) );

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

CMSC 104, Version 8/06

L25Strings.ppt

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" ) ); CMSC 104, Version 8/06

L25Strings.ppt

Built-in String Functions (cont’d) • How long is the data in the string (not

counting the null terminator)? stringSize = strlen( strA );

CMSC 104, Version 8/06

L25Strings.ppt

1

String Libraries #include files:

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

CMSC 104, Version 8/06

L25Strings.ppt

1

Sample Program #include <stdio.h> #include <stdlib.h> /* needed by atoi( ) and atof( ) */ #include <string.h> /* needed by str...( ) functions */

CMSC 104, Version 8/06

L25Strings.ppt

1

Sample Program (cont’d) int main( void ) { char a[ 100 ] = "Excellence"; char b[ 100 ]; char c[ 100 ] = "Failure"; int result;

CMSC 104, Version 8/06

L25Strings.ppt

1

Sample Program (cont’d) /* Make sure the array a is as expected */ printf( "string a is >%s<\n", a ); /* assign a to b */ strcpy( b, a ); printf( "After strcpy(b, a), string b is now >%s<\n", b );

CMSC 104, Version 8/06

L25Strings.ppt

1

Sample Program (cont’d) printf( "\n=============\nString b = >%s< and is %d characters long\n", b, strlen( b ) ); /* put in a space and add the array a to what is in array a */ strcat ( b, " " ); printf( "After strcat(b, \" \"), string b = >%s< and is %d characters long\n", b, strlen( b ) ); strcat ( b, a ); printf( "After strcat(b, a), string b = >%s< and is %d characters long\n", b, strlen( b ) ); CMSC 104, Version 8/06

L25Strings.ppt

1

Sample Program (cont’d) /* get the first token (delimited by a blank) */ printf( "strtok( b, \" \" ) gives %s\n", strtok( b, " " ) ); printf( "\n=============\n"); printf( "string a = %s string c = %s\n", a, c ); /* "Excellence" comes before "Failure", so print a negative number */ printf( "strcmp( a, c ) gives %d\n", strcmp( a, c ) );

CMSC 104, Version 8/06

L25Strings.ppt

1

Sample Program (cont’d) /* " Failure " comes before “Excellence ", so print a positive number */ printf( "strcmp( c, a ) gives %d\n", strcmp( c, a ) ); /* "Excellence" is the same as "Excellence", so print zero */ printf( "strcmp( a, \"Excellence\" gives %d\n", strcmp( a, "Excellence" ) );

CMSC 104, Version 8/06

L25Strings.ppt

1

Sample Program (cont’d) result = strcmp( "CMSC", "IFSM" ); /* negative */ printf( "After strcmp( \"CMSC\", \"IFSM\" ), result is %d\n", result); result = strcmp( "IFSM", "CMSC" ); /* positive */ printf( "After strcmp( \"IFSM\", \"CMSC\" ), result is %d\n", result); result = strcmp( "CMSC", "CMSC" ); /* zero */ printf( "After strcmp( \"CMSC\", \"CMSC\" ), result is %d\n", result); CMSC 104, Version 8/06

L25Strings.ppt

1

Sample Program (cont’d) printf( "\n=============\n"); /* convert a string to an integer */ printf( "atoi( \"1234\" gives %d\n", atoi( "1234" ) ); /* convert a string to a float */ printf( "atof( \"1234.5678\" ) gives %f\n", atof( "1234.5678" ) ); return 0; } CMSC 104, Version 8/06

L25Strings.ppt

1

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 CMSC 104, Version 8/06

L25Strings.ppt

2

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

CMSC 104, Version 8/06

L25Strings.ppt

2

Sample Program Output (cont’d) ============= atoi( "1234" gives 1234 atof( "1234.5678" ) gives 1234.567800

CMSC 104, Version 8/06

L25Strings.ppt

2

Related Documents

Strings
April 2020 19
Strings
May 2020 23
Strings
November 2019 20
Strings
November 2019 27
Strings Hommes
October 2019 40
Strings Notes.docx
April 2020 8