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函数的转换说明中间,不要添加任意字符。