“From today on, study hard and make progress every day”
Repetition is the best method for memory; spend one minute each day to remember the basics of C language.
“Essential Knowledge Points for C Language Beginners: 100 Articles Series“
16. Understanding the scanf() Function: Master User Input Handling to Never Fail to Input Desired Data Again
1. Basic Usage of scanf Function
scanf is the most commonly used input function in the C standard library, declared in the stdio.h header file:
int scanf(const char *format, ...);
Basic Example
#include <stdio.h>
int main() {
int age;
printf("Please enter your age: ");
scanf("%d", &age); // & symbol gets the variable address
printf("Your entered age is: %d\n", age);
return 0;
}
2. Detailed Explanation of Format Specifiers
scanf specifies the type of input data through format specifiers:
| Specifier | Usage | Example |
| %d | Decimal integer | scanf(“%d”, &num) |
| %f | Floating point number | scanf(“%f”, &flt) |
| %lf | Double precision floating point number | scanf(“%lf”, &dbl) |
| %c | Single character | scanf(“%c”, &ch) |
| %s | String (without spaces) | scanf(“%s”, str) |
| %[] | Scan a set of characters, can specify a range of specific characters | scanf(“%[a-z]”, str) or scanf(“%[^ ]”, str) |
3. Inputting Multiple Integer Values Simultaneously
int day, month, year;
printf("Please enter the date (DD MM YYYY): ");
scanf("%d %d %d", &day, &month, &year);
printf("Date: %d/%d/%d\n", day, month, year);
4. Handling String Input
1. Normal String Input
char name[50];
printf("Please enter your name: ");
scanf("%s", name); // Stops at space
2. Reading an Entire Line (Including Spaces)
char sentence[100];
printf("Please enter a sentence: ");
scanf(" %[^
]", sentence); // Reads until the first newline character
5. Input Validation and Error Handling
1. Check Return Value
int num;
printf("Please enter an integer: ");
if (scanf("%d", &num) != 1) {
printf("Invalid input!\n");
while(getchar() != '\n'); // Clear input buffer
}
2. Handling Residual Characters in Buffer
int age;
char ch;
printf("Please enter your age: ");
scanf("%d", &age);
while((ch = getchar()) != '\n' && ch != EOF); // Clear buffer
6. Common Coding Techniques
1. Limit Input Length (Prevent Overflow)
char filename[20];
printf("Enter filename (max 19 characters): ");
scanf("%19s", filename); // Leave 1 byte for '\0'
2. Skip Specific Input
int id;
printf("Please enter ID (format ID:123): ");
scanf("ID:%d", &id); // Only read the number after the colon
7. Common Issues
1. Residual Characters in Input Buffer Affect Subsequent Reads
int num;
char ch;
scanf("%d", &num); // User inputs "123\n"
scanf("%c", &ch); // ch will read '\n'
Solution:
scanf("%d", &num);
scanf(" %c", &ch); // Note the space before %c
2. Floating Point Precision Issues
float f;
double d;
scanf("%f", &f); // Correctly reads float
scanf("%lf", &d); // Correctly reads double
3. Use fgets+sscanf Instead of scanf to Avoid Buffer Overflow Issues
char buffer[100];
int age;
fgets(buffer, sizeof(buffer), stdin);
sscanf(buffer, "%d", &age);
Some students contacted me, wanting to have a study exchange group. I hesitated to create one before due to concerns about advertisements, but I think having a group would indeed be convenient, so I will try to set one up this time.
If you need it, hurry up and join; the validity period is 7 days.

———- End ———-
[Special Statement: All articles in this public account are original or authorized by the author. Some content and images are sourced from the internet and AI. Please feel free to consume them; the views are for learning reference only~~]


“If you like C, please like it”
Click the bottom right corner to see
“