Difficulty: Easy
Correct Answer: India
Explanation:
Introduction / Context:
This examines how printf with the %s format specifier handles C strings that contain embedded null bytes. In C, a string is terminated by the first null byte; any content after the first 0 byte is not part of the printable string for %s.
Given Data / Assumptions:
Concept / Approach:
%s expects a pointer to a null-terminated byte sequence. The library reads characters sequentially, stopping at the first 0 byte. Thus, any bytes stored after the first null are ignored for printing via %s unless you print them separately by pointer arithmetic.
Step-by-Step Solution:
The sequence at the array start is I n d i a followed by a null byte.printf("%s", str) reads characters until it reaches that null terminator.Therefore, only "India" appears on the output line.
Verification / Alternative check:
If one printed &str[6] (i.e., a pointer into the array beyond the first null) and if the next segment were properly terminated, you could print "CURIOUSTAB". But with %s on str itself, output is just the first segment.
Why Other Options Are Wrong:
CURIOUSTAB / India CURIOUSTAB / India\0CURIOUSTAB: They incorrectly assume that %s ignores or prints through the first null.None of the above: Incorrect because the program clearly prints "India".
Common Pitfalls:
Confusing array storage with C-string semantics; forgetting that %s requires a single contiguous, null-terminated string starting at the given pointer.
Final Answer:
India
Discussion & Comments