Bird
Raised Fist0
Cprogramming~20 mins

String input and output in C - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
String Input and Output Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this C code snippet?
Consider the following C program. What will it print when run?
C
#include <stdio.h>

int main() {
    char str[10];
    scanf("%s", str);
    printf("Hello, %s!", str);
    return 0;
}
ACompilation error
BHello, !
CHello, world!\n
DHello, world!
Attempts:
2 left
💡 Hint
Think about what scanf with %s reads and how printf prints it.
❓ Predict Output
intermediate
2:00remaining
What does this code print?
What is the output of this C program?
C
#include <stdio.h>

int main() {
    char s[6] = "Hello";
    printf("%s\n", s);
    return 0;
}
AHello
BHello\n
CHello\0
DCompilation error
Attempts:
2 left
💡 Hint
Remember how strings are stored and printed in C.
❓ Predict Output
advanced
2:00remaining
What is the output of this code with fgets?
What will this C program print if the user inputs: Hello World\n?
C
#include <stdio.h>

int main() {
    char buffer[6];
    fgets(buffer, 6, stdin);
    printf("%s", buffer);
    return 0;
}
AHello World
BHello
CHello\n
DHello\0
Attempts:
2 left
💡 Hint
fgets reads up to size-1 characters including newline if present.
❓ Predict Output
advanced
2:00remaining
What error does this code cause?
What happens when this C code runs?
C
#include <stdio.h>

int main() {
    char str[5];
    scanf("%s", str);
    printf("%s", str);
    return 0;
}
ARuntime error: segmentation fault always
BCompilation error due to missing semicolon
CBuffer overflow if input longer than 4 characters
DPrints input safely
Attempts:
2 left
💡 Hint
Think about how scanf reads strings and array size.
🧠 Conceptual
expert
2:00remaining
How many characters are read by fgets in this code?
Given this code, how many characters maximum will fgets read from input?
C
#include <stdio.h>

int main() {
    char input[10];
    fgets(input, sizeof(input), stdin);
    return 0;
}
A9 characters plus the null terminator
B10 characters plus the null terminator
CExactly 10 characters, no null terminator
D8 characters plus the null terminator
Attempts:
2 left
💡 Hint
Remember how fgets uses the size parameter.

Practice

(1/5)
1. Which function is used to read a single word string from the user in C?
easy
A. fgets(str, size, stdin);
B. printf("%s", str);
C. gets(str);
D. scanf("%s", str);

Solution

  1. Step 1: Understand string input functions

    scanf with "%s" reads a single word string until whitespace.
  2. Step 2: Identify correct function for single word input

    printf is for output, gets is unsafe, fgets reads whole line including spaces.
  3. Final Answer:

    scanf("%s", str); -> Option D
  4. Quick Check:

    Single word input = scanf("%s", str); [OK]
Hint: Use scanf with %s for single word input [OK]
Common Mistakes:
  • Using printf instead of scanf for input
  • Using fgets expecting single word input
  • Using gets which is unsafe
2. Which of the following is the correct syntax to print a string variable str in C?
easy
A. printf("%d", str);
B. printf("%s", str);
C. scanf("%s", str);
D. gets(str);

Solution

  1. Step 1: Identify the print format specifier for strings

    "%s" is used in printf to print strings.
  2. Step 2: Match correct function and format

    printf with "%d" is for integers, scanf is for input, gets reads input.
  3. Final Answer:

    printf("%s", str); -> Option B
  4. Quick Check:

    Print string = printf("%s", str); [OK]
Hint: Use printf with %s to print strings [OK]
Common Mistakes:
  • Using %d to print strings
  • Using scanf instead of printf for output
  • Using gets for printing
3. What will be the output of the following C code?
#include <stdio.h>
int main() {
    char str[20];
    scanf("%s", str);
    printf("%s", str);
    return 0;
}

If the user inputs: Hello World
medium
A. Hello
B. Hello World
C. World
D. Compilation error

Solution

  1. Step 1: Understand scanf with %s behavior

    scanf("%s", str) reads input until first whitespace, so it reads only "Hello".
  2. Step 2: Output printed by printf

    printf("%s", str) prints the stored string, which is "Hello".
  3. Final Answer:

    Hello -> Option A
  4. Quick Check:

    scanf with %s stops at space = Hello [OK]
Hint: scanf %s reads only until space, not full line [OK]
Common Mistakes:
  • Expecting scanf %s to read full line with spaces
  • Confusing scanf with fgets
  • Assuming output includes 'World'
4. Identify the error in the following code snippet for reading a full line including spaces:
#include <stdio.h>
int main() {
    char str[50];
    scanf("%s", str);
    printf("%s", str);
    return 0;
}
medium
A. char array size is too large
B. printf("%s", str) cannot print strings
C. scanf("%s", str) reads only until first space, not full line
D. Missing return type for main

Solution

  1. Step 1: Analyze scanf with %s for input

    scanf("%s", str) stops reading input at first whitespace, so it cannot read full line with spaces.
  2. Step 2: Check other parts of code

    printf("%s", str) correctly prints string, array size is sufficient, main has return type int.
  3. Final Answer:

    scanf("%s", str) reads only until first space, not full line -> Option C
  4. Quick Check:

    scanf %s stops at space, so not full line input [OK]
Hint: Use fgets to read full line with spaces [OK]
Common Mistakes:
  • Assuming scanf %s reads full line
  • Thinking printf can't print strings
  • Confusing array size issues
5. How can you correctly read a full line of text including spaces into a string str of size 100 in C?
hard
A. fgets(str, 100, stdin);
B. scanf("%s", str);
C. printf("%s", str);
D. gets(str);

Solution

  1. Step 1: Understand functions for reading strings with spaces

    scanf("%s", str) reads only until space, gets is unsafe and deprecated.
  2. Step 2: Identify safe function to read full line

    fgets(str, 100, stdin) reads up to 99 characters including spaces safely.
  3. Final Answer:

    fgets(str, 100, stdin); -> Option A
  4. Quick Check:

    Use fgets for full line input with spaces [OK]
Hint: Use fgets to read lines with spaces safely [OK]
Common Mistakes:
  • Using scanf %s for full line input
  • Using gets despite safety issues
  • Confusing printf with input functions
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