In C language, input and output are the basic ways for programs to interact with users.<span>scanf</span> and <span>printf</span> are the two most commonly used standard library functions for handling input and output. This article will provide a detailed introduction to the usage, format, and some considerations of these two functions.
1. printf Function
1.1 Function Prototype
int printf(const char *format, ...);
1.2 Functionality
<span>printf</span> is used to print formatted data to standard output (usually the screen).
1.3 Format Specifiers
When using <span>printf</span>, we need to use format specifiers to specify the data type. Here are some common format specifiers:
<span>%d</span>: Print integer<span>%f</span>: Print floating-point number<span>%c</span>: Print character<span>%s</span>: Print string<span>%%</span>: Output the percent sign itself
1.4 Example Code
Below is a simple example demonstrating how to use <span>printf</span> to output different types of data:
#include <stdio.h>
int main() { int age = 25; float height = 5.9; char initial = 'A'; char name[] = "Alice";
printf("Name: %s\n", name); printf("Initial: %c\n", initial); printf("Age: %d\n", age); printf("Height: %.2f feet\n", height);
return 0;}
Output Result:
Name: AliceInitial: AAge: 25Height: 5.90 feet
2. scanf Function
2.1 Function Prototype
int scanf(const char *format, ...);
2.2 Functionality
<span>scanf</span> is used to read formatted data from standard input (usually the keyboard).
2.3 Format Specifiers
Similar to <span>printf</span>, <span>scanf</span> uses the same format specifiers, but it is important to note that the address-of operator (&) must be added before each variable to store user input in the correct location.
2.4 Example Code
Below is a simple example demonstrating how to use <span>scanf</span> to get data from the user:
#include <stdio.h>
int main() { int age; float height;
printf("Enter your age: "); scanf("%d", &age); // Note the address-of operator here
printf("Enter your height in feet: "); scanf("%f", &height); // Address is also needed here
printf("You are %d years old and %.2f feet tall.\n", age, height);
return 0;}
Input/Output Result:
Assuming the user inputs:
30 6.0
The program outputs:
You are 30 years old and 6.00 feet tall.
Considerations
-
Buffer Issues: When you call
<span>scanf()</span>, be careful of newline characters in the buffer that may affect subsequent reads when reading strings or characters multiple times.To avoid this issue, you can add a space before reading a character, for example:
char ch;scanf(" %c", &ch); // The leading space will ignore any whitespace characters, including newlines.
Return Values: Both <span>scanf()</span> and <span>printf()</span> have return values. For <span>printf()</span>, it returns the number of characters successfully written, while for <span>scanf()</span>, it returns the number of successfully read items. This can help us check if the operation was successful.
Safety: In actual development, try to avoid using unrestricted input directly to prevent security risks such as buffer overflow. For example, for strings, you can limit the maximum length:
char str[100];scanf("%99s", str); // Limit to reading a maximum of 99 characters, plus the null terminator '\0' makes a total of 100.
Conclusion
Through this article’s detailed explanation of the commonly used input and output functions in C—<span>scanf()</span> and <span>printf()</span>, I believe everyone has gained a deeper understanding of them. When writing C programs, these two functions will become indispensable tools for you. I hope everyone can flexibly apply this knowledge to improve their programming skills!