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失败返回什么?这个我真不知道。好像没有失败过。