Chapter 10 Strings and Pointers
1
Introduction
String Constant
Example: printf(“Hello”);
“Hello” : a string constant
o A string constant is a series of characters surrounded
by double quotes.
How to declare a variable to store string values?
Represent a string using a one-dimensional
array of type char
char string[size];
Question: The size of a character array is fixed,
how can this variable take string constants with
different lengths as values?
2
Outline
String:
Representation of a string: \0
Using scanf to read in string
Initilization of strings
String-Handling Functions in the Standard
Library
Passing Arguments to main() using an array
of strings
3
The End-of-String Sentinel \0
A string is
a one-dimensional array of type char.
char w[100];
character value \0 is used to terminate a string
strings have a variable length delimited by the
null character \0 but with a maximum length
determined by the size of the character array
The size of the string must include the storage
needed for the null character \0.
4
The End-of-String Sentinel \0
the null character value \0 is used to terminate a string
Example:
#include <stdio.h>
int main(void){
char w[100];
w[0]='A';
w[1]='B';
w[2]='C';
w[3]='\0';
printf("%s\n", w);
}
% a.out
ABC
#include <stdio.h>
int main(void){
char w[100];
w[0]='A';
w[1]='B';
w[2]='C';
w[3]='\0';
w[4]=‘D';
printf("%s\n", w);
% a.out }
ABC
5
The End-of-String Sentinel \0
Example:
The size of the string must include the storage
needed for the null character \0.
#include <stdio.h>
int main(void){
char w[3];
w[0]='A';
w[1]='B';
w[2]='C';
w[3]='\0';
printf("%s\n", w);
}
overrun the bounds of w
6
Outline
String:
Representation of a string: \0
Using scanf to read in string
Initilization of strings
String-Handling Functions in the Standard
Library
Passing Arguments to main() using an array
of strings
7
Using scanf to reading string
Using scanf to read in a string
scanf(“%s”, w);
read in non-white space characters
o positions the input stream to an initial non-white
space character
o read in non-white space characters
o The process stops when a white space character or
EOF is encountered.
a null character is placed in memory to end the
string.
8
Using scanf to reading string
#include <stdio.h>
int main(void){
char w[10];
printf("Enter strings\n", w);
scanf("%s", w);
printf("%s\n", w);
}
% a.out
Enter strings
Hello
Hello
% a.out
Enter strings
Hello World
Hello
scanf(”%s”,w);
read in non-white space
characters
positions the input stream
to an initial non-white space
character
read in non-white space
characters
The process stops when a
white space character or EOF
is encountered.
a null character is placed in
memory to end the string.
9
Outline
String:
Representation of a string: \0
Using scanf to reading string
Initilization of strings
String-Handling Functions in the Standard
Library
Passing Arguments to main() using an array
of strings
10
Initialization of Strings
Initialization of Strings
Example: initialize a string variable as “abc”
char s[] = {‘a’, ‘b’, ‘c’, ‘\0’};
char s[]=“abc”;
#include <stdio.h>
int main(void){
char w[]="abc";
printf("%d\n", sizeof(w));
}
% a.out
4
The size of the string must include the storage needed for the
null character \0.
11
Initialization of Strings
A pointer to char can also be initialized with a
constant string.
A string constant is stored in memory by the compiler.
the pointer is assigned the address of the constant string in
memory.
Example: char p* = “abc”;
#include <stdio.h>
int main(void){
char *p="abc";
printf("%s\n",p);
}
% a.out
abc
12
Initialization of Strings
Difference between
initializing an array with a constant string and
initializing a pointer with a constant string
#include <stdio.h>
int main(void){
char s[]="abcdefg";
char *p="abcdefg";
printf("%s\n",s);
printf("%s\n",p);
printf("%d\n",sizeof(p));
printf("%d\n",sizeof(s));
}
% a.out
abcdefg
abcdefg
4
8
4 bytes is used to represent a memory address
13
Initialization of Strings
Difference between
initializing an array with a constant string
the array contains the individual characters
followed by the null character
initializing a pointer with a constant string
A string constant is stored in memory by the
compiler.
the pointer is assigned the address of the
constant string in memory.
14
Examples:
Process a string using array notation with subscripts
#include <stdio.h>
int main(void){
char c, name[100];
int i;
printf("Enter a Message:\n");
for (i=0; (c=getchar())!='\n'; ++i)
name[i]=c;
name[i]='\0';
}
for (i=0; name[i]!='\0'; ++i) {
if(isupper(name[i]))
name[i]=tolower(name[i]);
else if(islower(name[i]))
name[i]=toupper(name[i]);
}
printf("\n%s\n", name);
% a.out
Enter a Message:
Have a Good Day!
hAVE A gOOD dAY!
15
Examples:
Process a string using pointer
#include <stdio.h>
int main(void){
char c, name[100], *p;
int i;
printf("Enter a Message:\n");
for (i=0; (c=getchar())!='\n'; ++i)
name[i]=c;
name[i]='\0';
}
for (p=name; *p!='\0'; ++p) {
if(isupper(*p))
*p=tolower(*p);
else if(islower(*p))
*p=toupper(*p);
}
printf("\n%s\n", name);
% a.out
Enter a Message:
Have a Good Day!
hAVE A gOOD dAY!
16
Examples:
Process a string using pointer
#include <stdio.h>
int main(void){
char s[] = "Hello World";
printf("%s\n", s);
printf("%s\n", s+1);
printf("%s\n", s+2);
}
% a.out
Hello World
ello World
llo World
17
Outline
String:
String-Handling Functions in the Standard
Library
Passing Arguments to main() using an array
of strings
18
String-Handling Functions in the Standard Library
String-handling functions:
Function prototypes are provided by string.h
#include <string.h>
Functions:
Concatenate two strings: strcat (s1, s2);
Compare two strings: int strcmp (s1, s2);
Copy s2 to s1: strcpy (s1, s2);
Length of a string: strlen (s);
19
String-Handling Functions in the Standard Library
char &strcat (char *s1, const char *s2);
Concatenates s1 and s2, the result is put in s1.
The string s1 is returned.
#include <stdio.h>
#include <string.h>
int main(void){
char s1[100] = "Good Day";
char s2[100] = "Hello World";
strcat(s1, s2);
printf("s2=%s, s1= %s\n", s2, s1);
strcat(s1, s2+6);
printf("s2=%s, s1= %s\n", s2, s1);
}
% a.out
s2=Hello World, s1= Good DayHello World
s2=Hello World, s1= Good DayHello WorldWorld
20
String-Handling Functions in the Standard Library
int strcmp (const char &s1, const char *s2);
An integer is returned that is less than, equal to, or
greater tan zero, depending on whether s1 is
lexicographically less than, equal to, or greater than s2
#include <stdio.h>
#include <string.h>
int main(void){
char s1[100] = "Good Day";
char s2[100] = "Hello World";
printf("%d\n", strcmp(s1, s2));
printf("%d\n", strcmp(s1, s1));
printf("%d\n", strcmp(s2, s1));
}
% a.out
-1
0
1
21
String-Handling Functions in the Standard Library
char *strcpy (char *s1, const char *s2);
s2 is copied into s1 until \0 is moved. Whatever exists in s1 is
overwritten.
It is assumed that s1 has enough space to hold the result.
The value s1 is returned.
#include <stdio.h>
#include <string.h>
int main(void){
char s1[100] = "Good Day";
char s2[100] = "Hello World";
strcpy(s1, s2);
printf("s2=%s, s1= %s\n", s2, s1);
strcpy(s1+1, s2);
printf("s2=%s, s1= %s\n", s2, s1);
strcpy(s1+1, s2+6);
printf("s2=%s, s1= %s\n", s2, s1);
}
% a.out
s2=Hello World, s1= Hello World
s2=Hello World, s1= HHello World
s2=Hello World, s1= HWorld
22
String-Handling Functions in the Standard Library
unsigned strlen (const char *s);
A count of the number of characters before \0
is returned.
#include <stdio.h>
#include <string.h>
int main(void){
char s1[100] = "Good Day";
printf("%d\n", strlen(s1));
% a.out
}
8
23
Outline
String:
String-Handling Functions in the Standard
Library
Passing Arguments to main() using an array
of strings
24
Passing Arguments to main()
How main() communicates with the operating
system?
int main(void)
int main( int argc, char *argv[])
argc: the number of the command line
arguments
argv: an array of strings
25
Passing Arguments to main()
#include <stdio.h>
int main(int argc, char *argv[]){
int i;
printf("%d \n", argc);
for (i=0; i < argc; ++ i)
printf("%s\n", argv[i]);
}
%a.out Hello World
3
a.out
Hello
World
26
Summary
String:
Representing a string using an array of characters
\0 is used to terminated a string
strings have a variable length delimited by the null
character \0 but with a maximum length determined by
the size of the character array
initialization of strings
String-Handling Functions in the Standard Library
Passing Arguments to main()
argc: number of arguments
argv: an array of strings
27
© Copyright 2026 Paperzz