Bird
Raised Fist0
Cprogramming~10 mins

String handling using library functions - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - String handling using library functions
Start
↓
Declare strings
↓
Call library function
↓
Function processes strings
↓
Return result
↓
Use result (print, compare, etc.)
↓
End
This flow shows how C string library functions take strings as input, process them, and return results used in the program.
Execution Sample
C
#include <stdio.h>
#include <string.h>

int main() {
  char str1[] = "Hello";
  char str2[] = "World";
  int result = strcmp(str1, str2);
  printf("Compare result: %d\n", result);
  return 0;
}
This code compares two strings using strcmp and prints the comparison result.
Execution Table
StepActionInput ValuesFunction CalledFunction ResultProgram Output
1Declare str1str1 = "Hello"N/AN/AN/A
2Declare str2str2 = "World"N/AN/AN/A
3Call strcmpstr1 = "Hello", str2 = "World"strcmp(str1, str2)Negative value (e.g., -15)N/A
4Print resultresult = -15printfN/ACompare result: -15
5Return from mainN/AN/AN/AProgram ends
💡 Program ends after printing the comparison result.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
str1undefined"Hello""Hello""Hello""Hello"
str2undefinedundefined"World""World""World"
resultundefinedundefinedundefinedNegative value (e.g., -15)Negative value (e.g., -15)
Key Moments - 2 Insights
Why does strcmp return a negative number instead of just true or false?
strcmp returns a negative, zero, or positive number to show if the first string is less than, equal to, or greater than the second string. See step 3 in execution_table where result is a negative value meaning str1 < str2.
Why do we use char arrays for strings instead of just char variables?
Strings in C are arrays of characters ending with a special '\0' character. Each char variable holds one character only. See steps 1 and 2 where str1 and str2 are arrays holding multiple characters.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of 'result' after step 3?
A-15
B0
C15
DUndefined
💡 Hint
Check the 'Function Result' column in row for step 3.
At which step is the output 'Compare result: -15' printed?
AStep 2
BStep 4
CStep 3
DStep 5
💡 Hint
Look at the 'Program Output' column to find when the output appears.
If str1 was "World" and str2 was "Hello", what would strcmp likely return?
AA negative number
BZero
CA positive number
DAn error
💡 Hint
strcmp returns positive if first string is greater than second; see explanation in key_moments.
Concept Snapshot
C strings are char arrays ending with '\0'.
Use library functions like strcmp, strcpy, strlen.
strcmp compares strings and returns <0, 0, or >0.
strcpy copies one string to another.
strlen returns string length excluding '\0'.
Always include <string.h> to use these functions.
Full Transcript
This example shows how C handles strings using library functions. We declare two strings as char arrays: str1 with "Hello" and str2 with "World". Then we call strcmp to compare them. strcmp returns a negative number because "Hello" is less than "World" alphabetically. We store this result in the variable 'result'. Next, we print the result using printf, showing "Compare result: -15". Finally, the program ends. Key points: strcmp returns a number indicating order, not just true/false. Strings are arrays of chars ending with a null character. This trace helps visualize each step and variable change.

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