String handling in C
String handling in C involves working with arrays of characters. Unlike higher-level languages that have built-in string types, C treats strings as arrays of characters terminated by a null character ('\0'
). Here are some fundamental concepts and functions for handling strings in C:
Declaring and Initializing Strings in C
Static Initialization:
char str1[] = "Hello, World!";
This initializes a string with a null terminator automatically.
Dynamic Initialization:
char str2[20] = "Hello";
This creates a character array of size 20 and initializes it with the string “Hello”.
Common String Functions in C
The C Standard Library provides several functions to manipulate strings, declared in the string.h
header.
strlen
: Returns the length of the string (excluding the null terminator).
#include <string.h>
size_t len = strlen(str1);
strcpy
: Copies one string to another.
char dest[50];
strcpy(dest, str1);
strncpy
: Copies a specified number of characters from one string to another.
strncpy(dest, str2, 5);
strcat
: Concatenates (appends) one string to another.
char str3[50] = "Hello";
strcat(str3, ", World!");
strncat
: Concatenates a specified number of characters from one string to another.
strncat(str3, " How are you?", 5);
strcmp
: Compares two strings lexicographically.
int result = strcmp(str1, str2);
strncmp
: Compares a specified number of characters of two strings.
int result = strncmp(str1, str2, 5);
Example Program
Here’s a simple example demonstrating some of these functions:
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[20] = "World";
char str3[40];
// Concatenate str1 and str2
strcpy(str3, str1);
strcat(str3, " ");
strcat(str3, str2);
// Output the result
printf("Concatenated String: %s\n", str3);
// Length of str3
printf("Length of str3: %lu\n", strlen(str3));
// Compare str1 and str2
int cmp = strcmp(str1, str2);
if (cmp == 0) {
printf("str1 and str2 are equal.\n");
} else if (cmp < 0) {
printf("str1 is less than str2.\n");
} else {
printf("str1 is greater than str2.\n");
}
return 0;
}
Key Points to Remember
- Always ensure your character arrays are large enough to hold the strings you work with, including the null terminator.
- Be cautious with functions like
strcpy
andstrcat
as they do not check for buffer overflows. Prefer their safer counterpartsstrncpy
andstrncat
when dealing with unknown or potentially large input. - Understand that strings in C are mutable, and you can manipulate individual characters within a string array directly.
By mastering these basic string handling functions, you can perform a wide range of text processing tasks in C.