printf和fprintf的区别-举例

#include <stdio.h>
int printf( const char *format, ... );



printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中. 

字符串format(格式)由两类项目组成 - 显示到屏幕上的字符和定义printf()显示的其它参数. 基本上, 你可以指定一个包含文本在内的format(格式)字符串,也可以是映射到printf()其它参数的"特殊"字符. 例如本代码 

char name[20] = "Bob";
int age = 21;
printf( "Hello %s, you are %d years old\n", name, age );

显示下列输出: 

Hello Bob, you are 21 years old

%s 表示, "在这里插入首个参数,一个字符串." %d 表示第二个参数(一个整数)应该放置在那里. 不同的"%-codes"表示不同的变量类型, 也可以限制变量的长度. 

Code 格式 
%c 字符 
%d 带符号整数 
%i 带符号整数 
%e 科学计数法, 使用小写"e" 
%E 科学计数法, 使用大写"E" 
%f 浮点数 
%g 使用%e或%f中较短的一个 
%G 使用%E或%f中较短的一个 
%o 八进制 
%s 一串字符 
%u 无符号整数 
%x 无符号十六进制数, 用小写字母 
%X 无符号十六进制数, 用大写字母 
%p 一个指针 
%n 参数应该是一个指向一个整数的指针
指向的是字符数放置的位置

%% 一个'%'符号 

一个位于一个%和格式化命令间的整数担当着一个最小字段宽度说明符,并且加上足够多的空格或0使输出足够长. 如果你想填充0,在最小字段宽度说明符前放置0. 你可以使用一个精度修饰符,它可以根据使用的格式代码而有不同的含义. 

用%e, %E和 %f,精度修饰符让你指定想要的小数位数. 例如, 

%12.6f

将会至少显示12位数字,并带有6位小数的浮点数. 

用%g和 %G, 精度修饰符决定显示的有效数的位数最大值. 
用%s,精度修饰符简单的表示一个最大的最大长度, 以补充句点前的最小字段长度. 
所有的printf()的输出都是右对齐的,除非你在%符号后放置了负号. 例如, 

%-12.4f

将 会显示12位字符,4位小数位的浮点数并且左对齐. 你可以修改带字母l和h%d, %i, %o, %u和 %x 等类型说明符指定长型和短型数据类型 (例如 %hd 表示一个短整数). %e, %f和 %g 类型说明符,可以在它们前面放置l指出跟随的是一个double. %g, %f和 %e 类型说明符可以置于字符'#'前保证出现小数点, 即使没有小数位. 带%x类型说明符的'#'字符的使用, 表示显示十六进制数时应该带'0x'前缀. 带%o类型说明符的'#'字符的使用, 表示显示八进制数时应该带一个'0'前缀. 

你可以在输出字符串中包含 连续的Escape序列. 

printf()的返回值是打印的字符数,如果发生错误则返回一个负值. 

#include <stdio.h>
int fprintf( FILE *stream, const char *format, ... );



fprintf()函数根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值. 

示例: 

char name[20] = "Mary";
FILE *out;
out = fopen( "output.txt", "w" );
if( out != NULL )
fprintf( out, "Hello %s\n", name );

 

转载于:https://www.cnblogs.com/flyxiang2010/archive/2010/12/17/1909131.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 libusb 库通过查询 iConfiguration 字段来获取 USB 设备配置信息的例子代码: ```c #include <stdio.h> #include <stdlib.h> #include <libusb-1.0/libusb.h> int main(int argc, char **argv) { libusb_device **devs; libusb_device *dev; libusb_device_descriptor desc; libusb_config_descriptor *config; libusb_device_handle *handle = NULL; int r, i, j; // 初始化 libusb 库 r = libusb_init(NULL); if (r < 0) { fprintf(stderr, "libusb initialization failed: %s\n", libusb_error_name(r)); return 1; } // 获取 USB 设备列表 r = libusb_get_device_list(NULL, &devs); if (r < 0) { fprintf(stderr, "failed to get USB devices: %s\n", libusb_error_name(r)); return 1; } // 遍历 USB 设备列表 for (i = 0; devs[i]; i++) { dev = devs[i]; // 获取设备描述符 r = libusb_get_device_descriptor(dev, &desc); if (r < 0) { fprintf(stderr, "failed to get device descriptor: %s\n", libusb_error_name(r)); goto next; } // 打印设备信息 printf("Device %04x:%04x\n", desc.idVendor, desc.idProduct); printf("Number of configurations: %d\n", desc.bNumConfigurations); // 遍历设备配置 for (j = 0; j < desc.bNumConfigurations; j++) { // 获取配置描述符 r = libusb_get_config_descriptor(dev, j, &config); if (r < 0) { fprintf(stderr, "failed to get configuration descriptor: %s\n", libusb_error_name(r)); goto next; } // 打印配置信息 printf("Configuration %d:\n", config->bConfigurationValue); printf("Configuration name: %s\n", libusb_get_string_descriptor_ascii(handle, config->iConfiguration)); // 释放配置描述符 libusb_free_config_descriptor(config); } next: printf("\n"); } // 释放设备列表 libusb_free_device_list(devs, 1); // 退出 libusb 库 libusb_exit(NULL); return 0; } ``` 该程序将遍历系统中所有的 USB 设备,打印出设备的 ID 和支持的配置数量,以及每个配置的 ID 和名称。其中,使用了 `desc.bNumConfigurations` 字段获取设备支持的配置数量,使用 `libusb_get_config_descriptor()` 函数获取配置描述符,然后使用 `config->iConfiguration` 字段获取指向配置名称字符串描述符的索引号,最后使用 `libusb_get_string_descriptor_ascii()` 函数获取该字符串描述符的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值