2.4) Strings
2.4) Strings
Outline
• Declare a String
• Input a String
• Assign a String
• String functions
Program:
// character array
char c[10] = {‘E’, ‘E’, ‘/’,‘C’, ‘p’, ‘r’,‘E’};
for(i=0; i< 7; i++)
{
printf(“%c“, c[i]);
}
____________________________________________
Output: EE/CprE
Print another way
Program:
// character array
char c[10] = {‘E’, ‘E’, ‘/’,‘C’, ‘p’, ‘r’,‘E’};
____________________________________________
Output: EE/CprE
Declare another way
Program:
// define character array with a string
char c[10] = “EE/CprE”;
printf(“%s”, c); //%s to print a string
____________________________________________
Output: EE/CprE
Character vs. String
• Do NOT confuse strings with individual characters
‘E’ is a character
“E” is a string
• initialize a character array with
1) Array of characters
{‘E’,‘E’,‘/’,‘C’,‘p’,‘r’,‘E’}
2) A String
“EE/CprE” //easier to type
Declaring strings
c E
E
/
C
p
r
E
\0
NULL character
automatically
?
assigned
?
Array Contents
Program:
// character array
char c[10] = “EE/CprE”; c E
E
printf(“%s”, c); //output 1
/
c[8] = ‘a’;
C
printf(“%s”, c); //output 2 p
r
_________________________ E
Output 1: EE/CprE \0
Output 2: EE/CprE a
?
Strings, what’s happening
• Prints until NULL character is reached
▪ leave room for it!
Program:
// array size should be >= 8
char c[7] = “EE/CprE”;
printf(“%s”, c); //%s to print a string
____________________________________________
Output:
Strings
• Length is determined by first NULL in the string
char c[N];
scanf(“%s”, c); //no & symbol is required
printf(“%s”, c);
____________________________________________
Input: “EE CprE”
Output: EE //input separated by white space
Input a String
• gets
▪ Get a string from user input
▪ reads until enter is pressed
char c[N];
gets(c);
printf(“%s\n”, c);
____________________________________________
Input: “EE CprE”
Output: EE CprE
Assign value to a String
• Cannot use = operator in C to assign a String
Program:
// character array
char c[N];
c[N] = “Monday”; //will NOT work
Assign value to a String
• Use the String function strcpy in string.h
▪ Copies a string into a destination string
#include <string.h>
…
char c[N];
char tomorrow[] = “Tuesday”;
…
strcpy(c, “Monday”); //c is the destination
…
strcpy(c, tomorrow); //another assignment
Assign value to a String
• Watch out for overflow (bad)
c W
#include <string.h> e
… d
n
char c[7];
e
strcpy(c, “Wednesday”);
s
d
a
overflow y
\0
Assign value to a String
• Better to use strncpy
▪ copies up to n characters from the source
#include <string.h> c W
… e
char c[7]; d
n
strncpy(c, “Wednesday”, 7);
e
s
need NULL d
Assign value to a String
• Better to use strncpy
▪ assign NULL to the end afterword
c W
#include <string.h> e
… d
n
char c[7];
e
strncpy(c, “Wednesday”, 6);
s
c[6] = ‘\0’; \0
//OR
c[6] = NULL; //NULL and ‘\0’ are the same
String Functions <string.h>
• strcmp or strncmp
▪ Compares two strings (good for sorting)
strcmp(“Saturday”, “Sunday”); //answer is -1
• strlen
▪ Returns the number of characters in “Saturday”
strlen(“Saturday”) //answer is 8
String Functions <string.h>
• strcat
▪ Concatenate two strings (good for sorting)
printf(“%s”, a);
____________________________________________
Output: Hello World!
Character Operations <ctype.h>
• isalpha
▪ is the character a letter of the alphabet?
• isdigit
▪ Is the character a number?
• islower, isupper
▪ Checks the case of the letter
• ispunct
• isspace
A good reference
• http://www.crasseux.com/books/ctutorial/String-
library-
functions.html#String%20library%20functions