Bird
Raised Fist0
Cprogramming~20 mins

String handling using library functions - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
String Handling Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of string concatenation with strcat
What is the output of this C program?
C
#include <stdio.h>
#include <string.h>

int main() {
    char str1[20] = "Hello";
    char str2[] = " World";
    strcat(str1, str2);
    printf("%s", str1);
    return 0;
}
ACompilation error
BHello
CHello World
D WorldHello
Attempts:
2 left
💡 Hint
Remember that strcat appends the second string to the first one.
❓ Predict Output
intermediate
2:00remaining
Result of strlen on a string
What is the output of this C program?
C
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "C programming";
    printf("%zu", strlen(str));
    return 0;
}
A12
B14
CCompilation error
D13
Attempts:
2 left
💡 Hint
strlen counts characters before the null terminator.
❓ Predict Output
advanced
2:00remaining
Output of strcmp comparing two strings
What is the output of this C program?
C
#include <stdio.h>
#include <string.h>

int main() {
    char s1[] = "apple";
    char s2[] = "apples";
    int result = strcmp(s1, s2);
    printf("%d", result);
    return 0;
}
A0
BA negative number
CA positive number
DCompilation error
Attempts:
2 left
💡 Hint
strcmp returns negative if first string is less than second.
❓ Predict Output
advanced
2:00remaining
Behavior of strcpy with overlapping strings
What is the output of this C program?
C
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "overlap";
    strcpy(str + 2, str);
    printf("%s", str);
    return 0;
}
AUndefined behavior (may crash or print garbage)
Bovoverlap
Claplap
Doverlap
Attempts:
2 left
💡 Hint
strcpy does not support overlapping source and destination.
🧠 Conceptual
expert
2:00remaining
Which function safely copies strings with buffer size limit?
Which of the following C functions is designed to copy strings safely by limiting the number of characters copied to avoid buffer overflow?
Astrncpy
Bstrcpy
Cstrcat
Dstrcmp
Attempts:
2 left
💡 Hint
One function lets you specify the maximum number of characters to copy.

Practice

(1/5)
1. Which library function in C is used to find the length of a string (excluding the null character)?
easy
A. strcpy()
B. strcat()
C. strcmp()
D. strlen()

Solution

  1. 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.
  2. Step 2: Compare with other functions

    strcpy() copies strings, strcmp() compares strings, strcat() concatenates strings, so they do not measure length.
  3. Final Answer:

    strlen() -> Option D
  4. Quick Check:

    Length function = strlen() [OK]
Hint: Length means count chars before '\0', use strlen() [OK]
Common Mistakes:
  • Confusing strcpy() with strlen()
  • Using strcmp() to get length
  • Forgetting null terminator in length count
2. Which of the following is the correct syntax to copy string src into dest using a standard library function?
easy
A. strcpy(src, dest);
B. strcpy(dest, src);
C. strcpy(dest);
D. strcpy(src);

Solution

  1. Step 1: Recall strcpy() function signature

    strcpy() takes two arguments: destination string first, then source string to copy from.
  2. Step 2: Check each option

    Only strcpy(dest, src); matches the correct order and argument count.
  3. Final Answer:

    strcpy(dest, src); -> Option B
  4. Quick Check:

    Copy syntax = strcpy(dest, src) [OK]
Hint: Destination first, source second in strcpy() [OK]
Common Mistakes:
  • Swapping source and destination arguments
  • Using only one argument
  • Missing semicolon or parentheses
3. What will be the output of the following C code?
#include <stdio.h>
#include <string.h>

int main() {
    char str1[20] = "Hello";
    char str2[] = "World";
    strcat(str1, str2);
    printf("%s", str1);
    return 0;
}
medium
A. HelloWorld
B. Hello World
C. WorldHello
D. Hello

Solution

  1. Step 1: Understand strcat() behavior

    strcat() appends the second string to the end of the first string without adding spaces.
  2. Step 2: Analyze the code output

    str1 starts as "Hello", str2 is "World". After strcat(str1, str2), str1 becomes "HelloWorld".
  3. Final Answer:

    HelloWorld -> Option A
  4. Quick Check:

    Concatenate without space = HelloWorld [OK]
Hint: strcat joins strings directly, no spaces added [OK]
Common Mistakes:
  • Expecting a space between strings
  • Confusing strcat() with strcpy()
  • Not allocating enough space in destination
4. Identify the error in the following code snippet:
#include <string.h>

int main() {
    char s1[5] = "Data";
    char s2[] = "Science";
    strcat(s1, s2);
    return 0;
}
medium
A. Missing #include <stdio.h>
B. strcat() syntax is incorrect
C. s1 array size is too small for concatenation
D. s2 should be declared as char *s2

Solution

  1. Step 1: Check array sizes for strcat()

    s1 has size 5, holding "Data" plus '\0'. Concatenating "Science" (7 chars) will overflow s1.
  2. Step 2: Verify other options

    strcat() syntax is correct, #include <stdio.h> is not mandatory here, and s2 declaration is valid as array.
  3. Final Answer:

    s1 array size is too small for concatenation -> Option C
  4. Quick Check:

    Buffer overflow risk = s1 too small [OK]
Hint: Destination array must fit combined strings [OK]
Common Mistakes:
  • Ignoring buffer size for strcat()
  • Assuming strcat() adds space automatically
  • Confusing array and pointer declarations
5. Given two strings char s1[] = "apple"; and char s2[] = "apricot";, which library function call correctly checks if s1 comes before s2 in dictionary order?
hard
A. strcmp(s1, s2) < 0
B. strcmp(s1, s2) > 0
C. strcmp(s2, s1) < 0
D. strcmp(s2, s1) > 0

Solution

  1. 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.
  2. Step 2: Apply to given strings

    "apple" comes before "apricot", so strcmp(s1, s2) returns negative, meaning strcmp(s1, s2) < 0 is true.
  3. Final Answer:

    strcmp(s1, s2) < 0 -> Option A
  4. Quick Check:

    Lex order check = strcmp(s1, s2) < 0 [OK]
Hint: strcmp() negative means first string is before second [OK]
Common Mistakes:
  • Reversing argument order in strcmp()
  • Checking for > 0 instead of < 0
  • Assuming strcmp() returns boolean
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard