Download presentation
Presentation is loading. Please wait.
Published byWilliam Adams Modified over 8 years ago
1
CMSC 104, Version 8/061L25Strings.ppt Strings Topics String Libraries String Operations Sample Program Reading Sections 8.1 - 8.7
2
CMSC 104, Version 8/062L25Strings.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.)
3
CMSC 104, Version 8/063L25Strings.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”;
4
CMSC 104, Version 8/064L25Strings.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.
5
CMSC 104, Version 8/065L25Strings.ppt Built-in String Functions String assignment: strcpy( destination, source ) char name[ 25 ]; /* contains nothing */ strcpy( name, “Hilton” ); /* name now contains “Hilton” */
6
CMSC 104, Version 8/066L25Strings.ppt Built-in String Functions (cont’d) String comparison: strcmp( strA, strB ); o 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 */
7
CMSC 104, Version 8/067L25Strings.ppt Built-in String Functions (cont’d) String combination: strcat( destination, source ) o The source is not changed. o 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 );
8
CMSC 104, Version 8/068L25Strings.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. */
9
CMSC 104, Version 8/069L25Strings.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" ) );
10
CMSC 104, Version 8/0610L25Strings.ppt Built-in String Functions (cont’d) How long is the data in the string (not counting the null terminator)? stringSize = strlen( strA );
11
CMSC 104, Version 8/0611L25Strings.ppt String Libraries #include files: #include /* needed by atoi( ) and atof( ) */ #include /* needed by str...( ) functions */
12
CMSC 104, Version 8/0612L25Strings.ppt Sample Program #include #include /* needed by atoi( ) and atof( ) */ #include /* needed by str...( ) functions */
13
CMSC 104, Version 8/0613L25Strings.ppt Sample Program (cont’d) int main( void ) { char a[ 100 ] = "Excellence"; char b[ 100 ]; char c[ 100 ] = "Failure"; int result;
14
CMSC 104, Version 8/0614L25Strings.ppt 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 );
15
CMSC 104, Version 8/0615L25Strings.ppt 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 ) );
16
CMSC 104, Version 8/0616L25Strings.ppt 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 ) );
17
CMSC 104, Version 8/0617L25Strings.ppt 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" ) );
18
CMSC 104, Version 8/0618L25Strings.ppt 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);
19
CMSC 104, Version 8/0619L25Strings.ppt 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; }
20
CMSC 104, Version 8/0620L25Strings.ppt 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
21
CMSC 104, Version 8/0621L25Strings.ppt 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
22
CMSC 104, Version 8/0622L25Strings.ppt Sample Program Output (cont’d) ============= atoi( "1234" gives 1234 atof( "1234.5678" ) gives 1234.567800
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.