C Arrays of Strings
Arrays of Strings
A string is an array of characters. When you want to store a list of words, like names or fruits, you can use an array of strings.
In C, an array of strings is a two-dimensional array of characters:
Example
char fruits[3][10] = {"Apple", "Banana", "Cherry"};
printf("%s\n", fruits[0]);
Try it Yourself »
The first number (3) is how many strings the array can hold. The second number (10) is the size of each string, including the \0 at the end (see The Null Character). So each fruit can have up to 9 letters.
You can think of it as a table, where each row is one string:
\0 shows where the string ends, and the rest of the row is not used.Loop Through an Array of Strings
Use a for loop to print all the strings in the array:
Example
char fruits[3][10] = {"Apple", "Banana", "Cherry"};
int i;
for (i = 0; i < 3; i++) {
printf("%s\n", fruits[i]);
}
Try it Yourself »
Note: Do not use strlen() here. It counts the characters in one string, not the number of strings.
To get the number of strings, use sizeof(fruits) / sizeof(fruits[0]) (30 / 10 = 3):
Example
char fruits[3][10] = {"Apple", "Banana", "Cherry"};
int count = sizeof(fruits) / sizeof(fruits[0]);
int i;
printf("Number of strings: %d\n", count);
for (i = 0; i < count; i++) {
printf("%s\n", fruits[i]);
}
Try it Yourself »
Access a Single Character
To access one character, use two indexes: the first one picks the string, and the second one picks the character in that string.
For example, fruits[1][0] is the first character of the second string:
Example
char fruits[3][10] = {"Apple", "Banana", "Cherry"};
printf("%c\n", fruits[1][0]); // B
Try it Yourself »
Change a String
You cannot use = to give a string in the array a new value:
Example
fruits[0] = "Mango"; // Error
Use the strcpy() function instead (see String Functions):
Example
char fruits[3][10] = {"Apple", "Banana", "Cherry"};
strcpy(fruits[0], "Mango");
printf("%s\n", fruits[0]);
Try it Yourself »
Note: The new string must fit in the row. "Mango" needs 6 characters (5 letters and \0), so it fits in 10. "Watermelon" needs 11, so it does not.
Real-Life Example
Check if a name is on a guest list. In this example, we check if "Jenny" is on the list.
The program compares the name with each string in the array, using strcmp().
It returns 0 when two strings are equal:
Example
char guests[4][20] = {"Liam", "Anja", "Jenny", "Olivia"};
char name[] = "Jenny";
int found = 0;
int i;
for (i = 0; i < 4; i++) {
if (strcmp(guests[i], name) == 0) {
found = 1;
break;
}
}
if (found) {
printf("%s is on the guest list\n", name);
} else {
printf("%s is not on the guest list\n", name);
}
Try it Yourself »