搜索
热搜: NOIP OIer 神牛
查看: 382|回复: 1

scanf原型讲解

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-1-22 12:44:17 | 显示全部楼层 |阅读模式
int scanf(const char * restrict format,...);
函数 scanf() 是从标准输入流stdin (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。

返回值编辑
scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
如:
scanf("%d %d",&a,&b);
函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。
例:使用scanf函数输入数据。
#include <stdio.h>
int main(void)
{
    int a,b,c;
    printf("Give me the value of a,b,c seperated with whitespaces:\n");
    scanf("%d%d%d",&a,&b,&c);
    printf("a=%d,b=%d,c=%d\n",a,b,c);
    return 0;
}
&a,&b,&c中的&是寻址操作符,&a表示对象a在内存中的地址。变量a,b,c的地址是在编译阶段分配的(存储顺序由编译器决定)。
这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”。

回复

使用道具 举报

35

主题

54

帖子

4532

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4532
发表于 2024-7-26 19:47:38 | 显示全部楼层
scanf("%d %d",&a,&b);
函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
如果只有a被成功读入,返回值为1;
如果a和b都未被成功读入,返回值为0;
如果遇到错误或遇到end of file,返回值为EOF(-1)。end of file为Ctrl+z 或者Ctrl+d。


~
‘~’ 为一元运算符,用于求整数的二进制反码。
scanf()的返回值为大于等于-1的数,只有当scanf()返回值为-1(二进制表示为全1)时,~scanf()的值为0,其他情况均不为0.

while(~scanf("%d%d",&a,&b))          /*~scanf("%d%d",&a,&b)的返回值永不为0*/
                printf("%d\n",a+b);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表