What if you could talk to your program like a friend instead of spelling everything out letter by letter?
Why String input and output in C? - Purpose & Use Cases
Imagine you want to ask a friend for their name and then say hello to them. Doing this by writing each letter one by one on paper is slow and tiring.
Typing or reading each character separately in code is slow and easy to mess up. You might forget a letter or mix up the order, making your program confusing and buggy.
Using string input and output lets you handle whole words or sentences at once. This makes your program simpler, faster, and easier to understand.
char c; scanf(" %c", &c); printf("You typed: %c", c);
char name[50]; scanf("%49s", name); printf("Hello, %s!", name);
You can easily read and show full words or sentences, making your programs interactive and user-friendly.
When you log into a website, you type your username and password as strings. The program reads these strings to check who you are.
Manual character handling is slow and error-prone.
String input/output lets you work with whole words easily.
This makes programs simpler and more useful.
Practice
Solution
Step 1: Understand string input functions
scanf with "%s" reads a single word string until whitespace.Step 2: Identify correct function for single word input
printf is for output, gets is unsafe, fgets reads whole line including spaces.Final Answer:
scanf("%s", str); -> Option DQuick Check:
Single word input = scanf("%s", str); [OK]
- Using printf instead of scanf for input
- Using fgets expecting single word input
- Using gets which is unsafe
str in C?Solution
Step 1: Identify the print format specifier for strings
"%s" is used in printf to print strings.Step 2: Match correct function and format
printf with "%d" is for integers, scanf is for input, gets reads input.Final Answer:
printf("%s", str); -> Option BQuick Check:
Print string = printf("%s", str); [OK]
- Using %d to print strings
- Using scanf instead of printf for output
- Using gets for printing
#include <stdio.h>
int main() {
char str[20];
scanf("%s", str);
printf("%s", str);
return 0;
}If the user inputs:
Hello WorldSolution
Step 1: Understand scanf with %s behavior
scanf("%s", str) reads input until first whitespace, so it reads only "Hello".Step 2: Output printed by printf
printf("%s", str) prints the stored string, which is "Hello".Final Answer:
Hello -> Option AQuick Check:
scanf with %s stops at space = Hello [OK]
- Expecting scanf %s to read full line with spaces
- Confusing scanf with fgets
- Assuming output includes 'World'
#include <stdio.h>
int main() {
char str[50];
scanf("%s", str);
printf("%s", str);
return 0;
}Solution
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.Step 2: Check other parts of code
printf("%s", str) correctly prints string, array size is sufficient, main has return type int.Final Answer:
scanf("%s", str) reads only until first space, not full line -> Option CQuick Check:
scanf %s stops at space, so not full line input [OK]
- Assuming scanf %s reads full line
- Thinking printf can't print strings
- Confusing array size issues
str of size 100 in C?Solution
Step 1: Understand functions for reading strings with spaces
scanf("%s", str) reads only until space, gets is unsafe and deprecated.Step 2: Identify safe function to read full line
fgets(str, 100, stdin) reads up to 99 characters including spaces safely.Final Answer:
fgets(str, 100, stdin); -> Option AQuick Check:
Use fgets for full line input with spaces [OK]
- Using scanf %s for full line input
- Using gets despite safety issues
- Confusing printf with input functions
Ready to prove it?
Pass the test and this pattern moves unknown
