[go: up one dir, main page]

0% found this document useful (0 votes)
204 views22 pages

Strings: Topics String Libraries String Operations Sample Program Reading Sections 8.1 - 8.7

This document discusses strings in C programming. It covers string libraries, built-in string functions like strcpy(), strcmp(), and strcat() for manipulating strings. It provides examples of using these functions to copy, compare, concatenate strings. It also shows how to convert strings to numbers using atoi() and to floats using atof(). The document includes sample code demonstrating the use of various string functions.

Uploaded by

Sandeep9
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
204 views22 pages

Strings: Topics String Libraries String Operations Sample Program Reading Sections 8.1 - 8.7

This document discusses strings in C programming. It covers string libraries, built-in string functions like strcpy(), strcmp(), and strcat() for manipulating strings. It provides examples of using these functions to copy, compare, concatenate strings. It also shows how to convert strings to numbers using atoi() and to floats using atof(). The document includes sample code demonstrating the use of various string functions.

Uploaded by

Sandeep9
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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 );
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 */

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

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

You might also like