Hint: Use strcmp to compare strings, not == operator [OK]
Common Mistakes:
Using == to compare strings
Confusing strcpy with strcmp
Assuming strlen compares strings
2. Which header file must be included to use the strcmp function in C?
easy
A.
B.
C.
D.
Solution
Step 1: Recall standard headers for string functions
String functions like strcmp are declared in the <string.h> header file.
Step 2: Verify other headers
<stdio.h> is for input/output, <stdlib.h> for general utilities, <ctype.h> for character handling, none provide strcmp.
Final Answer:
<string.h> -> Option D
Quick Check:
strcmp needs <string.h> [OK]
Hint: Include for strcmp and other string functions [OK]
Common Mistakes:
Forgetting to include
Including only
Using wrong header like
3. What is the output of the following C code?
#include <stdio.h>
#include <string.h>
int main() {
char a[] = "apple";
char b[] = "apricot";
int result = strcmp(a, b);
if (result < 0) {
printf("a is less than b\n");
} else if (result > 0) {
printf("a is greater than b\n");
} else {
printf("a and b are equal\n");
}
return 0;
}
medium
A. a is less than b
B. a is greater than b
C. a and b are equal
D. Compilation error
Solution
Step 1: Understand strcmp result for "apple" and "apricot"
strcmp compares strings lexicographically; "apple" is less than "apricot" because 'l' (in apple) comes before 'r' (in apricot).
Step 2: Check the if conditions
Since result is negative, the program prints "a is less than b".
Final Answer:
a is less than b -> Option A
Quick Check:
strcmp("apple", "apricot") < 0 [OK]
Hint: strcmp returns negative if first string is lexically smaller [OK]
Common Mistakes:
Assuming strcmp returns boolean
Confusing lex order of 'l' and 'r'
Expecting equality for different strings
4. Identify the error in this code snippet comparing two strings:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello";
char str2[] = "hello";
if (str1 == str2) {
printf("Strings are equal\n");
} else {
printf("Strings are not equal\n");
}
return 0;
}
medium
A. Using '==' to compare strings instead of strcmp
B. Missing #include header
C. Incorrect printf format specifier
D. Strings are not initialized properly
Solution
Step 1: Understand string comparison in C
Using '==' compares addresses, not string contents, so it does not check if strings are equal.
Step 2: Correct method to compare strings
Use strcmp(str1, str2) == 0 to check if strings have the same content.
Final Answer:
Using '==' to compare strings instead of strcmp -> Option A
Quick Check:
Use strcmp for string content comparison [OK]
Hint: Never use '==' for strings; use strcmp instead [OK]
Common Mistakes:
Using '==' operator for string comparison
Ignoring string content vs pointer comparison
Not including when using strcmp
5. You want to check if two strings str1 and str2 are equal ignoring case differences in C. Which approach correctly achieves this?
hard
A. Use strcmp(str1, str2) == 0
B. Use strcasecmp(str1, str2) == 0
C. Use strcmp(tolower(str1), tolower(str2)) == 0
D. Use strcmp(str1, str2) != 0
Solution
Step 1: Understand case-insensitive comparison
strcmp compares case-sensitively, so it fails if cases differ. strcasecmp compares ignoring case.
Step 2: Evaluate other options
Use strcmp(str1, str2) == 0 is case-sensitive; Use strcmp(tolower(str1), tolower(str2)) == 0 is invalid because tolower expects a char, not a string; Use strcmp(str1, str2) != 0 checks inequality, not equality.
Final Answer:
Use strcasecmp(str1, str2) == 0 -> Option B
Quick Check:
strcasecmp compares strings ignoring case [OK]
Hint: Use strcasecmp for case-insensitive string comparison [OK]
Common Mistakes:
Using strcmp for case-insensitive check
Applying tolower to whole strings incorrectly
Confusing equality and inequality checks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.