C语言数据输入与输出:格式化函数详解

需积分: 10 1 下载量 137 浏览量 更新于2024-08-16 收藏 328KB PPT 举报
"这篇文档是关于C语言中的格式输入与输出函数的教程,重点介绍了`scanf`和`printf`函数的使用方法。" 在C语言中,数据的输入与输出是通过函数来实现的,而不是像其他一些高级语言那样有专门的I/O语句。在输入输出操作中,`scanf`和`printf`是非常重要的两个函数,它们分别用于从标准输入(通常是键盘)读取数据和向标准输出(通常是显示器)打印数据。 ## 1. 格式输入函数 - `scanf` `scanf`函数的基本格式如下: ```c scanf(“格式控制串”,地址表) ``` 这个函数的功能是按照指定的格式控制串从键盘读取数据,并将其存储到地址表所指向的变量中。例如: ```c scanf("%d", &a); ``` 这行代码会等待用户输入一个整数,然后将其存入变量`a`中。输入完成后,用户通常需要按回车键结束输入。 `scanf`函数支持以下格式字符: - `%d`: 读取十进制整数 - `%i`: 同 `%d` - `%o`: 读取八进制整数 - `%x`: 读取十六进制整数 - `%u`: 读取无符号整数 - `%c`: 读取单个字符 - `%s`: 读取字符串 - `%f`: 读取浮点数 - `%e`, `%E`: 读取指数形式的浮点数 - `%g`, `%G`: 读取科学记数法或小数形式的浮点数 - `%%`: 读取并输出一个百分号 ## 2. 字符输出函数 - `putchar` `putchar`函数用于将单个字符输出到显示器。其基本格式如下: ```c putchar(c) ``` 其中`c`可以是字符常量、变量或表达式。例如: ```c putchar('A'); ``` 这行代码会输出大写字母"A"。 ## 3. 格式输出函数 - `printf` `printf`函数是C语言中进行格式化输出的主要函数,其基本格式如下: ```c printf(“格式控制串”,输出表) ``` 它能按照指定的格式控制串输出数据,支持多种格式字符,与`scanf`类似。例如: ```c printf("%d", a); ``` 这行代码会将变量`a`的值以十进制整数的形式输出。 `printf`函数的格式控制串包括两种信息: 1. 格式说明:以`%`开头,后面可跟一些修饰符和格式字符,用来指定输出格式。 2. 普通字符或转义序列:这些字符会被原样输出。 ## 4. 示例 下面是一些使用`printf`的示例,展示了不同格式字符的使用: ```c int a = 567; printf("%d", a); // 输出:567 int b = 255; printf("%x", b); // 输出:ff int c = 65; printf("%o", c); // 输出:101 unsigned int d = 567; printf("%u", d); // 输出:567 char e = 65; printf("%c", e); // 输出:A printf("%s", "ABC"); // 输出:ABC float f = 567.789; printf("%e", f); // 输出:5.677890e+02 printf("%f", f); // 输出:567.789000 printf("%g", f); // 输出:567.789 printf("%%"); // 输出:% ``` 注意,`printf`函数的格式字符必须是小写,并且格式字符与输出项的个数和顺序应当对应。如果输出项类型与指定的格式不符,C语言会尝试自动转换以符合指定的格式。 举例来说,以下代码可能会导致意外的结果: ```c unsigned int u = 65535; printf("u=%d\n", u); // 输出:u=-1 ``` 因为`%d`用于输出带符号的整数,而`u`是一个无符号整数,当无符号整数超过有符号整数的表示范围时,输出可能会变为负数。 此外,`printf`函数会返回输出的字节数,如果发生错误则返回EOF(-1)。这一点在进行错误检查时可能会用到。 总结,理解和熟练使用`scanf`和`printf`函数是掌握C语言输入输出的关键,它们为程序提供了一种灵活的方式来处理数据的输入和输出。在实际编程中,应根据需求选择合适的格式字符和修饰符,以确保数据正确地被读取和显示。