关于printf和scanf函数的返回值

printf()函数返回成功打印的字符数,包括空格和转义字符(比如‘\n’就属于一个字符),但不包括‘\0'。发生错误时,返回负值(-1)。
scanf()函数返回成功读取的项数的个数,未成功赋值的字段不计算在内。如果未读取到项,则返回0。当读取到”文件结尾“时,返回-1。
例:
int n = printf("Hello,World\n");                 
 n为12(除过10个字母,还有“,”和“\n”)。

char *arr = "Hello,W orld";
int n = printf("%s\n",arr);            
n也为12(除过10个字母,还有个“,”和空格(W和o中间),末尾的‘\0’不算)。

int a, b;
int n = scanf("%d%d", &a,&b);
printf("%d\n", n);                                      
如果正确输入,则打印n的值为2。如未正确输入,则打印成功读取到的项数。(比如:输入:78  98  则n为2。输入:78,89  则n为1)

附加
int a, b;
int n = scanf("%d,%d", &a,&b);
printf("%d\n", n);    
此时,如果想正确读取,比如读取 1和2,就要输入:1, 2   然后回车,需要在“,”和2中间需要加空白字符(空格,回车,制表符等)。


int a, b;
int n = scanf("%d,nihao%d", &a,&b);
printf("%d\n", n);
此时,如果想正确读取,比如读取 1和2给a和b,就要输入:1,nihao 2   然后回车,需要在“,nihao”和2中间需要加空白字符(空格,回车,制表符等)。

所以,为了不自找麻烦,在scanf函数的转换说明中间,不要添加任意字符。

      



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值