printf和scanf的返回值

  • Post author:
  • Post category:其他



scanf()的返回值为成功输入的数据个数


如:


scanf("%d%d%s", &a, &b, s); //执行成功返回3
scanf("%d%d", &a, &b); //执行成功返回2


如果在输入的过程中scanf(“%d%d”,&a,&b);由于某种原因只有a输入成功了则返回1,a、b都没成功则返回0


如果遇到错误或遇到end of file,返回EOF(一般宏定义EOF为-1)。



printf()返回它成功打印出的字符个数

。不管输出int 型还是转义字符都按字符输出。


如:


int a = 1;
int b = 2;
char s[] = "hello";
int j;
j = printf("%d%d%s\n", a, b, s);
printf("%d\n", j);


输出为:12hello












8


为什么不是7而是8呢?因为输出的字符串后面还有一个换行符。




如果把上面j=printf(“%d%d%s\n”,a,b,s);改为j=printf(“%d%d%s”,a,b,s);


则输出为:12hello7


就没有换行符,输出来的只有7个字符。





如果把上面j=printf(“%d%d%s\n”,a,b,s);改为j=printf(“%d %d %s\n”,a,b,s);


则输出为:1 2 hello           //数数这个输出序列有多少个字符,空格不要放过
















10



如果改为:


int a = 10;
int b = 20;
char s[] = "hello";
int j;
j = printf("%d%d%s\n", a, b, s);
printf("%d\n", j);


则输出为:1020hello


10                             //因为10和20是两位数,在输出的字符序列中各占两位



至于printf失败返回什么?这个我真不知道。好像没有失败过。



版权声明:本文为u013684730原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。