scanf函数
扫描输入函数`scanf()`用于从标准输入读取数据,常用于从键盘读取用户输入。它的工作原理与`printf()`相反,`scanf()`会从标准输入中读取数据并存储到指定的变量中。
`scanf()`函数的基本语法格式如下: ``` int scanf(const char *format, FILE *stream, ...) ``` 其中,`format`是格式控制字符串,`stream`是输入流,通常使用`stdin`(标准输入流)。1. **格式控制字符串**:`scanf()`的第一个参数是格式控制字符串,用于指定数据的类型和读取方式。常见的格式字符包括: - `%d`:读取整数,忽略空白字符(空格、换行符等)。 - `%c`:读取单个字符,包括空白字符。 - `%s`:读取字符串,会读取到空白字符或终止符。 2. **输入流参数**:`scanf()`的第二个参数是输入流,通常使用`stdin`。- **读取数据**:`scanf()`从输入流读取数据到缓冲区,然后根据格式控制字符串进行处理。 - **空白字符处理**:在读取数字时(如`%d`),`scanf()`会跳过空白字符(如空格、换行符、制表符)直到找到有效数字为止。 - **字符处理**:在读取字符时(如`%c`),空白字符也会被读取并存储到目标变量中。- 对于`%d`,如果输入中包含非数字字符(如字母),`scanf()`会跳过这些字符,直到找到有效数字为止。如果没有找到有效数字,则函数返回`EOF`(End Of File)。 - 对于`%c`,所有读取到的字符都会被存储到目标变量中,无论是空格还是回车键。- 当使用`%s`格式时,`scanf()`会读取到空白字符或终止符(如`\n`),然后停止读取。因此,在读取字符串时需要特别注意。以下示例展示了如何使用`scanf()`读取输入: ```c int i; scanf("%d", &i); printf("i = %d\n", i); system("pause"); ``` 该程序会从标准输入读取一个整数`i`,然后将其打印出来。printf函数
`printf()`函数用于向标准输出输出数据,是与`scanf()`相反的函数。它允许程序员格式化输出数据,提供更大的控制能力。`printf()`的语法格式如下: ``` int printf(const char *format, ...) ``` 其中,`format`是格式控制字符串,包含输出的格式说明符和输出顺序。常见的格式说明符包括: - `%d`:输出整数。 - `%c`:输出字符。 - `%s`:输出字符串。 - `%f`:输出浮点数。 - `%g`:输出一般实数(可以选择输出浮点数或整数,取决于小数点后的位数)。 - `%x`:输出十六进制数。 - `%X`:输出十六进制数,并使用大写字母。 - `%o`:输出八进制数。 - `%b`:输出二进制数。 - `%n`:输出字节数。- **输出顺序**:`printf()`函数按照格式控制字符串中指定的顺序输出变量的值。 - **格式化选项**:可以通过格式字符串中的各种格式化选项来控制输出的格式,例如: - `*`:左对齐。 - `>`:右对齐。 - `^`:居中对齐。 - `#`:在整数前面加上符号(如`#`)。 - `0`:左边补零。 - `-`:左边补空格(仅适用于整数)。以下示例展示了如何使用`printf()`输出数据: ```c printf("Hello, World!\n"); printf("Number: %d\n", i); printf("Float number: %.2f\n", 3.141592653589793); ``` 该程序会输出以下内容: ``` Hello, World! Number: 5 Float number: 3.14 ```