1 / 22

Strings

Strings. Topics String Libraries String Operations Sample Program Reading Sections 8.1 - 8.7. 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”;

baylee
Download Presentation

Strings

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. Strings Topics • String Libraries • String Operations • Sample Program Reading • Sections 8.1 - 8.7

  2. 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. 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. 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. Built-in String Functions • String assignment:strcpy( destination, source )char name[ 25 ]; /* contains nothing */strcpy( name, “Hilton” ); /* name now contains “Hilton” */

  6. Built-in String Functions (cont’d) • String comparison:strcmp( 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( “CSMC”, “CMSC” ); /* zero */

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

  8. 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. 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. Built-in String Functions (cont’d) • How long is the data in the string (not counting the null terminator)? stringSize = strlen( strA );

  11. String Libraries #include files: #include <stdlib.h> /* needed by atoi( ) and atof( ) */ #include <string.h> /* needed by str...( ) functions */

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

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

  14. 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. 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. 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. 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. 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. 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. 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. 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. Sample Program Output (cont’d) ============= atoi( "1234" gives 1234 atof( "1234.5678" ) gives 1234.567800

More Related