We use library functions to easily work with text (strings) without writing long code. They help us find length, copy, join, or compare strings quickly.
String handling using library functions
#include <string.h> size_t strlen(const char *str); char *strcpy(char *dest, const char *src); char *strcat(char *dest, const char *src); int strcmp(const char *str1, const char *str2); char *strstr(const char *haystack, const char *needle);
Always include <string.h> to use these functions.
Strings in C are arrays of characters ending with a special \0 character.
#include <string.h>
size_t length = strlen("hello");dest.char dest[20]; strcpy(dest, "world");
char str1[20] = "Hello, "; strcat(str1, "friend!");
int result = strcmp("apple", "apple");
This program shows how to find string length, copy strings, join strings, compare them, and find a substring using library functions.
#include <stdio.h> #include <string.h> int main() { char str1[50] = "Hello"; char str2[] = " World"; char str3[50]; // Find length printf("Length of str1: %zu\n", strlen(str1)); // Copy str1 to str3 strcpy(str3, str1); printf("After copy, str3: %s\n", str3); // Concatenate str2 to str1 strcat(str1, str2); printf("After concatenation, str1: %s\n", str1); // Compare str1 and str3 int cmp = strcmp(str1, str3); if (cmp == 0) { printf("str1 and str3 are the same\n"); } else { printf("str1 and str3 are different\n"); } // Find substring char *pos = strstr(str1, "World"); if (pos != NULL) { printf("Found 'World' in str1 at position: %ld\n", (long)(pos - str1)); } else { printf("'World' not found in str1\n"); } return 0; }
Make sure destination arrays are large enough to hold the result to avoid errors.
String functions expect strings to end with \0, so always use proper string initialization.
Comparing strings with strcmp returns 0 if equal, negative if first is smaller, positive if first is larger.
Library functions make string tasks easy and fast.
Remember to include <string.h> and use proper string arrays.
Common functions: strlen, strcpy, strcat, strcmp, strstr.
Practice
Solution
Step 1: Understand the purpose of strlen()
The function strlen() counts characters in a string until it reaches the null terminator '\0', giving the string length.Step 2: Compare with other functions
strcpy() copies strings, strcmp() compares strings, strcat() concatenates strings, so they do not measure length.Final Answer:
strlen() -> Option DQuick Check:
Length function = strlen() [OK]
- Confusing strcpy() with strlen()
- Using strcmp() to get length
- Forgetting null terminator in length count
src into dest using a standard library function?Solution
Step 1: Recall strcpy() function signature
strcpy() takes two arguments: destination string first, then source string to copy from.Step 2: Check each option
Only strcpy(dest, src); matches the correct order and argument count.Final Answer:
strcpy(dest, src); -> Option BQuick Check:
Copy syntax = strcpy(dest, src) [OK]
- Swapping source and destination arguments
- Using only one argument
- Missing semicolon or parentheses
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[] = "World";
strcat(str1, str2);
printf("%s", str1);
return 0;
}Solution
Step 1: Understand strcat() behavior
strcat() appends the second string to the end of the first string without adding spaces.Step 2: Analyze the code output
str1 starts as "Hello", str2 is "World". After strcat(str1, str2), str1 becomes "HelloWorld".Final Answer:
HelloWorld -> Option AQuick Check:
Concatenate without space = HelloWorld [OK]
- Expecting a space between strings
- Confusing strcat() with strcpy()
- Not allocating enough space in destination
#include <string.h>
int main() {
char s1[5] = "Data";
char s2[] = "Science";
strcat(s1, s2);
return 0;
}Solution
Step 1: Check array sizes for strcat()
s1 has size 5, holding "Data" plus '\0'. Concatenating "Science" (7 chars) will overflow s1.Step 2: Verify other options
strcat() syntax is correct, #include <stdio.h> is not mandatory here, and s2 declaration is valid as array.Final Answer:
s1 array size is too small for concatenation -> Option CQuick Check:
Buffer overflow risk = s1 too small [OK]
- Ignoring buffer size for strcat()
- Assuming strcat() adds space automatically
- Confusing array and pointer declarations
char s1[] = "apple"; and char s2[] = "apricot";, which library function call correctly checks if s1 comes before s2 in dictionary order?Solution
Step 1: Understand strcmp() return values
strcmp() returns a negative value if first string is lexicographically less than second, zero if equal, positive if greater.Step 2: Apply to given strings
"apple" comes before "apricot", so strcmp(s1, s2) returns negative, meaning strcmp(s1, s2) < 0 is true.Final Answer:
strcmp(s1, s2) < 0 -> Option AQuick Check:
Lex order check = strcmp(s1, s2) < 0 [OK]
- Reversing argument order in strcmp()
- Checking for > 0 instead of < 0
- Assuming strcmp() returns boolean
Ready to prove it?
Pass the test and this pattern moves unknown
