0% found this document useful (0 votes)
74 views18 pages

L9 2

A string is a sequence of characters terminated by a null character. Strings can be represented as character arrays, with the null character indicating the end. The document discusses how to declare, initialize, read, and print strings in C. It also covers string literals, null termination, string variables, 2D arrays of strings, and functions like scanf(), printf(), gets(), and puts() for working with strings.

Uploaded by

T uohz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
74 views18 pages

L9 2

A string is a sequence of characters terminated by a null character. Strings can be represented as character arrays, with the null character indicating the end. The document discusses how to declare, initialize, read, and print strings in C. It also covers string literals, null termination, string variables, 2D arrays of strings, and functions like scanf(), printf(), gets(), and puts() for working with strings.

Uploaded by

T uohz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

(9-2) Strings I

H&K Chapter 8
Instructor - Andrew S. OFallon
CptS 121 (March 14, 2014)
Washington State University

String Fundamentals

A string is a sequence of characters terminated by


the null character (\0)

This is a string is considered a string literal


A string may include letters, digits, and special characters

A string may always be represented by a character


array, but a character array is not always a string
A string is accessed via a pointer to the first
character in it
This week, we'll learn more about how to work with
strings in the C Language

C. Hundhausen, A. OFallon

String Basics (1)

Whether you realize it or not, you've been working with


C strings all semester:
string
printf("CptS %d is fun!\n",121);

It's just that we haven't ever declared a string variable.


In C, a string is represented as an array of characters:
char name [20]; /* declares a variable name that can hold a
string of length 20 */

Be sure to always account for the \0 in your array


declarations

name[ ] may have up to 19 characters + 1 for the null


character

C. Hundhausen, A. OFallon

String Basics (2)

As with other data types, we can even initialize a


string when we declare it:
char name[20] = Bill Gates";
char *name = Bill Gates";
char name[] = {B, i, l, l, , G, a, t, e,
s, \0;}
// These are equivalent string declarations!

Here's what the memory allocated to name looks like after


either of the above is executed:
null character (terminates all strings)
name B i l l

G a t e s \0 ? ? ? ? ? ? ? ? ?
4

C. Hundhausen, A. OFallon

10 11 12 13 14 15 16 17 18 19

String Basics (3)

Notes on the null character

When a string is initialized on the line it is declared, the


compiler automatically "null terminates" the string
All of C's string handling functions work only with nullterminated strings; any characters to the right of the null
character are ignored
The ASCII value of the null character is 0

C. Hundhausen, A. OFallon

String Basics (4)


When

a variable of type char* is initialized


with a string literal, it may be placed in
memory where the string cant be modified
If you want to ensure modifiability of a string
store it into a character array when initializing
it

C. Hundhausen, A. OFallon

String Basics (5)

Populating a string using scanf ( )


char my_string [50];
// The address of operator (&) is not required because the name of the
// array is an address
scanf (%s, my_string);

Notes on scanf ( ):

Using %s will automatically append a null character to the end of the string
Reads character-by-character until whitespace is encountered, i.e. if the user enters:
Bill Gates, only Bill is read; however, Gates is still in the input stream

Displaying a string using printf ( )


printf (%s\n, my_string);

Notes on printf ( ):

Using %s will display character-by-character until a null character is encountered; white space
and printable special characters will be displayed
If a null character is missing from the end of the string, all contiguous memory will be printed
until a null character happens to be found in memory

C. Hundhausen, A. OFallon

String Basics (6)

Arrays of Strings

Suppose we want to store a list of students in a class


We can do this by declaring an array of strings, one row
for each student name:
#define NUM_STUDENTS 5
#define MAX_NAME_LENGTH 31
char student_names[NUM_STUDENTS][MAX_NAME_LENGTH];

We can initialize an array of strings "in line":


char student_names[NUM_STUDENTS][MAX_NAME_LENGTH] =
{"John Doe", "Jane Smith", "Sandra Connor", "Damien White",
"Metilda Cougar"};

In most cases, however, we're probably going to want to


read the names in from the keyboard or a file

C. Hundhausen, A. OFallon

String Basics (7)

Printing Out and Reading In Strings


#include <stdio.h>
#define [NUM_STUDENTS] 5
#define [MAX_NAME_LENGTH] 31
char student_names[NUM_STUDENTS][MAX_NAME_LENGTH];
int i;
for (i = 0; i < NUM_STUDENTS; ++i)
{
printf("Please enter student name: ");
scanf("%s",student_names[i]);
printf("The name '%s' was just read in.\n",
student_names[i]);
}

Is the above code robust? Could it lead to a run-time crash?

C. Hundhausen, A. OFallon

String Basics (8)

Just as is the case for doubles and ints, we can


specify a field width in a printf statement involving a
string (%s). By default, the string is right justified within
that field, e.g.,
printf("string value: %5s\n",my_string);
/* string is right justified within field of 5 */

If we want to left-justify the string, we specify a


negative field width, e.g.,
printf("string value: %-5s\n",my_string);
/* string is left justified within field of 5 */

10

C. Hundhausen, A. OFallon

String Basics (9)

11

Reading in multiple data types alongside the string


data type:

C. Hundhausen, A. OFallon

String Basics (10)

When the previous program is run and the user enters the following (which is
not in the correct format):

MATH,1270,TR,1800
The scanf call
scanf("%s%d%s%d",dept,&course_num,days,&time);

interprets this all as one string, storing it to dept (bad news!):

Moral: We need a more robust way to read in multiple data types (Stay
tuned!)

12

C. Hundhausen, A. OFallon

String Basics (11)

Example problem:

Write a segment of code that prompts the user for a


word of length 24 characters or less, and prints a
statement like this:
fractal starts with the letter f
Have the program process words until it encounters a
"word" beginning with the character '9'.

13

C. Hundhausen, A. OFallon

String Basics (12)

Solution:
#include <stdio.h>
#define STRING_LENGTH 25
int main()
{
char name[STRING_LENGTH];
int done;
do
{
done = 0;
printf("Enter a name ('9') to quit: ");
scanf("%s",name);
if (name[0] == '9')
done = 1;
else
printf("%s starts with the letter %c.\n",
name,name[0]);
} while (!done);
return (0);
}

14

C. Hundhausen, A. OFallon

String Basics (13)

Use gets() to read a complete line, including


whitespace, from the keyboard until the <enter> key
is pressed; the <enter> is not included as part of the
string

Use puts() to display a string followed by a newline

15

Usage: gets(my_array)
If the user enters Bill Gates and presses <enter>, the
entire string will be read into my_array excluding the
<enter> or newline
Usage: puts(my_array)

C. Hundhausen, A. OFallon

What To Look Forward To

More on Strings:

16

String handling library functions


Arrays of Pointers
Character input/output and robust string input
Character conversion
String processing example

C. Hundhausen, A. OFallon

References
J.R.

Hanly & E.B. Koffman, Problem Solving


and Program Design in C (7th Ed.), AddisonWesley, 2013.
P.J. Deitel & H.M. Deitel, C How to Program
(5th Ed.), Pearson Education , Inc., 2007.

17

C. Hundhausen, A. OFallon

Collaborators
Chris

18

Hundhausen

C. Hundhausen, A. OFallon

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy