c语言scanf输入用法?

如果要把1,2,3,4,5,6 分别给到a,b,c,d,e,f 要怎么输入?

把11,22,33,44,5,6给a,b,c,d,e,f要怎么输入?
printf("%d%d%d%d%c%c",a,b,c,d,e,f);输出是这样的
不要改程序啊~~~
1 2 3 4 56 这样输入的话 只输出1234 5

1 2 3 456这样的话 要敲两下回车 这是为什么啊?
顺便问问能不能用tab换行符号进行输入

scanf 函数最主要的用法是:

scanf("输入控制符", 输入参数);

函数原型:int scanf(const char * restrict format,...);

函数 scanf() 是从标准输入流stdin (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。


扩展资料:

函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。

发展:

使用scanf函数进行输入,必须指定输入的数据的类型和格式,不仅繁琐复杂,而且很容易出错。C++保留scanf只是为了和C兼容。

以便过去用C语言写的程序可以在C++的环境下运行。C++的编程人员都愿意使用cin进行输入,很少使用scanf。

但是scanf有一个明显的优点,速度比cin函数快。

参考资料:

百度百科-scanf (计算机语言函数)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-13

scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

第2个回答  2014-03-29
楼主注意了 getchar()是输入 字符函数哦,所以要是用getchar输入5,6那么对应输出的整数应当是它们对应的ASCII码值,也就是53,54.因为此程序中既有scanf,又有getchar,所以要消除换行建对程序的影响。具体做法如下#include<stdio.h>
int main()
{
    int a,b,c,d,e,f;
    char ch;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    ch=getchar();
    e=getchar();
    ch=getchar();
    f=getchar();
    printf("%d,%d,%d,%d,%d,%d",a,b,c,d,e,f);
    return 0;
}

输入:1 2 3 4 5 6(每个数字中间用空格隔开)

输出:1 2 3 4 53 54(注意 后面的53,54就是你输入的5,6)

追问

ch里面用来存放空格的? 如果不要ch呢?
输入 1 2 3 4 56 是这样输入吗?但是这样只输出1234 5

第3个回答  2014-03-29
把e=getchar()和f=getchar()改成e=getchar()-'0'和f=getchar()-'0',在这两语句前各加一条getchar();语句。输入时:1 2 3 4 5 6回车就可以啦。你也可以一个一回车。追问

e=getchar()-'0'和f=getchar()-'0' 改这个有什么用么?

直接像我程序那样的话怎么输入呢?

追答

你得知道函数是干什么的得搞清楚,getchar()接收的是字符,即是输入字符的ASCII码,0是48,1是49,依次类推,而‘0’就是0的ASCII码48,不-'0'怎么能成int值?直接像你那样输入得到的是1 2 3 4 53 54而不是1 2 3 4 5 6!

追问

。。。我关注的不是这个位置~好吧后面补充了是以字符型输出的 我是问输入scanf怎么输入 关于空格逗号回车tab之类的

追答

那你得好好看看scanf函数的解释,最好是英文原版,因为一些译本说得非常含糊。scanf是复杂库函数,不同的控制符有不同的规则:比如在%d控制下,非数字字符一律不接收,并将接收的连续字符自动转换成int数值;而在%c控制下却接收所有字符,只要键盘能敲出来的都按一个ASCII码处理,即使你连续输入了好几个字符,它也只接收最前面的一个,把其他的留在输入缓冲区;而在%s控制下则能连续增收一个不定长的字符串,并自动在最后加一个'\0',可是‘ ’、‘\b'、'\t'、'\n'等它却不接收,所以就不能接收有‘ ‘的字符串,因而不能接收英文句子,因为句子中免不了有’ ‘……不过也用不着畏惧它,相信即便是C高手也不见得能细数它的全部功能。我们只好用到什么就学什么,掌握什么好了……

本回答被提问者采纳
第4个回答  2014-03-29
用空格隔开。比如响应scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);,输入:1 2 3 4 5 6。追问

前面几个%d可以用空格 后面ef 不行 前面能用逗号或者回车隔开吗?

追答

scanf()函数读入数据时,无论读入数值型数据还是字符数据,都以空格、、作为分隔符。

相似回答