c语言中scanf和printf都是输出函数,两者有什么区别呢

作者&投稿:韶伯 (若有异议请与网页底部的电邮联系)
在c语言中scanf函数和printf函数具体怎么用,还有这两者的区别是什么?~

1.如scanf("%d",i)中只要前面是%d,后面i不管是什么类型?都按指定的格式(整形)输出?
2.如printf("%d",i)中i必须是前面规定的类型(整型)?
如果我直接printf(i)就不对?假设对的话,这个意思就是输出变量名i?]
而printf("%d",i)就是输出变量值的意思?
那么第一个"%d"就是帮助程序(或者格式化)获取一个需要的类型的值?
那么第二个"%d"就是告诉计算机输出的变量的值是个整形?

应该是四个空格,要不就是保留小数点后四个数。

两者完全不同,scanf是输入函数,printf是输出函数,所以会经常同时出现。两者也没有可比性,需要弄清他们的概念。

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

比如: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。

2.printf()函数是格式化输出函数, 它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。

printf 函数的一般形式为:

int printf(const char *format, [argument]);

Format 参数是包含三种对象类型的一个字符串:

(1)无格式字符复制到输出流;

(2)转换规范,每个规范导致在值参数列表中检索 1 个或更多个项;

(3)转义序列。

[Argument]包含需要输出的数据,可以是常量(字符常量、数字常量、字符串常量),变量,以及运算式。此处的数据应当与前面的format中的格式控制符一一对应(如果不对应会产生错误)。

例子:

#include<stdio.h>

int main(){

int i, j;

scanf("%d %d", &i, &j);   //获得输入值i,j;

printf("i=%d;j=%d", i, j);  //输出i,j;

return 0;}

扩展资料:

在C语言或C++中,会把用来#include的文件的扩展名叫 .h,称其为头文件。 #include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸;或者提供跨工程公共代码。

stdio 就是指 “standard input & output"(标准输入输出)。

在C语言中,输入和输出是经由标准库中的一组函数来实现的。在ANSI C中,这些函数被定义在头文件<stdio.h>中。所以,源代码中如用到标准输入输出函数时,就要包含这个头文件.

引用方法:#include <stdio.h>;

有三个标准输入/输出是标准I/O库预先定义的:

stdin标准输入;

stdout标准输出;

stderr输入输出错误。

参考资料:printf-百度百科

scanf-百度百科



  在使用scanf和printf函数时要加上#include <stdio.h>。其中scanf()是格式输入函数,printf()函数是格式化输出函数。

  其通常的用法如下:

#include<stdio.h>
int main()
{
    int i, j;
    scanf("%d, %d", &i, &j);//从键盘输入i,j
    printf("i=%d;j=%d", i, j);//输出i,j;
    return 0;
}


scanf是格式化输入。不是输出。

一、scanf函数的一般形式

  scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串, 也就是不能显示提示字符串。地址表列中给出各变量的地址。 地址是由地址运算符“&”后跟变量名组成的。例如,&a,&b分别表示变量a和变量b 的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。 应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。

  变量的地址和变量值的关系如下: &a--->a567 a为变量名,567是变量的值,&a是变量a的地址。在赋值表达式中给变量赋值,如: a=567 在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。 这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。

void main(){
int a,b,c;
printf("input a,b,c ");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}

  注意&的用法!

  在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入7、8、9后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔, 因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。

  如: 7 8 9

  或 

  7
  8
  9

  格式字符串

  格式字符串的一般形式为: %[*][输入数据宽度][长度]类型 其中有方括号[]的项为任选项。各项的意义如下:

  1.类型

  表示输入数据的类型,其格式符和意义下表所示。

格式 字符意义
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
u 输入无符号十进制整数
f或e 输入实型数(用小数形式或指数形式)
c 输入单个字符
s 输入字符串

  2.“*”符

  用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。 如 scanf("%d %*d %d",&a,&b);当输入为:1 2 3 时,把1赋予a,2被跳过,3赋予b。

  3.宽度

  用十进制整数指定输入的宽度(即字符数)。例如: scanf("%5d",&a);

  输入:

  12345678

  只把12345赋予变量a,其余部分被截去。又如: scanf("%4d%4d",&a,&b);

  输入:

  12345678将把1234赋予a,而把5678赋予b。

  4.长度

  长度格式符为l和h,l表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h表示输入短整型数据。
使用scanf函数还必须注意以下几点:

  a. scanf函数中没有精度控制,如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。

  b. scanf中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。

  c. 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

  d. 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:
scanf("%c%c%c",&a,&b,&c);

  输入为:

  d e f

  则把'd'赋予a, 'f'赋予b,'e'赋予c。只有当输入为:

  def

  时,才能把'd'赋于a,'e'赋予b,'f'赋予c。 如果在格式控制中加入空格作为间隔,如 scanf ("%c %c %c",&a,&b,&c);则输入时各数据之间可加空格。

void main(){
char a,b;
printf("input character a,b ");
scanf("%c%c",&a,&b);
printf("%c%c ",a,b);
}
scanf("'C14F14%c%c",&a,&b);
printf("%c%c ",a,b);

  由于scanf函数"%c%c"中没有空格,输入M N,结果输出只有M。

  而输入改为MN时则可输出MN两字符,见下面的输入运行情况:

input character a,b  
MN
MN

void main(){
char a,b;
printf("input character a,b ");
scanf("%c %c",&a,&b);
printf(" %c%c ",a,b);
}
scanf("%c %c",&a,&b);

  本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。e. 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

  例如:

  scanf("%d,%d,%d",&a,&b,&c); 其中用非格式符“ , ”作间隔符,故输入时应为: 5,6,7

  又如: scanf("a=%d,b=%d,c=%d",&a,&b,&c);

  则输入应为

  a=5,b=6,c=7g. 如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。

void main(){
int a;
printf("input a number ");
scanf("%d",&a);
printf("%ld",a);
}

  由于输入数据类型为整型, 而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。如改动程序如下:

void main(){
long a;
printf("input a long integer ");
scanf("%ld",&a);
printf("%ld",a);
}

  运行结果为:

input a long integer
1234567890
1234567890 当输入数据改为长整型后,输入输出数据相等。

  键盘输入函数

  getchar函数getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar(); 通常把输入的字符赋予一个字符变量,构成赋值语句,如:

char c;
c=getchar();#include<stdio.h>
void main(){
char c;
printf("input a character ");
c=getchar();
putchar(c);
}

  使用getchar函数还应注意几个问题:

  1.getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。

  2.使用本函数前必须包含文件“stdio.h”。

  3.在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。

void main(){
char a,b,c;
printf("input character a,b,c ");
scanf("%c %c %c",&a,&b,&c);
printf("%d,%d,%d %c,%c,%c ",a,b,c,a-32,b-32,c-32);
}

  输入三个小写字母

  输出其ASCII码和对应的大写字母。

void main(){
int a;
long b;
float f;
double d;
char c;
printf("%d,%d,%d,%d,%d",sizeof(a),sizeof(b),sizeof(f)
,sizeof(d),sizeof(c));
}

  输出各种数据类型的字节长度。 二、printf printf的格式控制中,宽度是指输出的数据要占多少格,并不是说数据本身是多少格,比如我完全可以设置单独的一个数字1占20格.当然,设置的宽度如果比要输出的数的实际宽度小的话,就失去作用了.比如12345,你设置宽度为4的话,它照样输出12345.再比如这里-3.2e+03的宽度是8,已经超过6了.这种情况,数据会原样输出,不管宽度.

至于是-3.2还是-3.22,我在自己电脑上运行结果是3.22,而且根据我看过的书上的解释,也应该是3.22.只能认为TC 2.0的作者没能很好地理解标准了,因此在TC 3.0的时候修正了这个错误.

最后,根据我所知道的,%e是以科学计数法形式输出,而科学计数法规定了数的标准形式是整数位只有1位.所以你想控制数字位数的想法是无法实现的.


在C语言中cin和scanf有什么区别呢?
c\/c++ 语言中cin与scanf区别为:性质不同、操作效率不同、取数据不同。一、性质不同 1、cin:cin是标准化输入,包含在头文件<iostream>中。2、scanf:scanf是格式化输入,包含在头文件<stdio.h>中。二、操作效率不同 1、cin:cin先把要输入的东西存入缓冲区,再输入,导致的输入操作效率稍低,但...

scanf与&的区别是什么?
二者的区别是一个是取变量的值,一个是取地址。scanf(%d",&a) 是读取整型变量a在内存中的地址,而scanf("%d",a)是读取整型变量a的值。&是取地址的意思,&a是取出变量a的地址scanf(%d",&a) 就是读取1个数字,写入a的地址,scanf("%d",a),是读取1个数字,写入地址a,这个a如果是100,就...

C语言中的scanf是什么意思?
C语言中scanf是标准库函数,主要用来接收用户输入的数据。scanf与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。函数格式:int scanf(char *format, args, ...);功 能...

scanf在c语言中的用法
scanf在c语言中的用法有两种,一种是输入控制符和参数;另一种是输入控制符、非输入控制符和参数。1、输入控制符和参数 输入控制符和参数是scanf函数的最简单用法,也是最常用、最基本、最重要的用法。这样通过scanf就可以在程序运行的过程中由用户来指定变量的值。该用法是从键盘输入的字符转化为“输入...

c语言中scanf语句的用法及规则
c语言中scanf语句的用法及规则 在C语言中,scanf()函数用于从标准输入(通常是键盘)读取数据,并将其存储到指定的变量中。scanf()函数通常与格式化字符串一起使用,格式化字符串指定了要读取的数据类型和格式。scanf()函数按照格式化字符串中指定的格式读取数据,并将其存储到指定的变量中。scanf()函数的...

c语言中, scanf是干什么用的?
scanf是c语言中的标准库函数,主要作用是接收用户输入的数据。scanf是C语言中的输入函数,可以从键盘获得用户输入,和printf输出功能正好相反。scanf的输入格式是多种多样的,使用时需根据情况选择,最常用的是十进制整数型输入%d。scanf的使用和输入格式 scanf("%d", &c); \/\/输入一个整数并赋值给c。

C语言中scanf()与gets()函数的区别,哪一个可以读入空格啊?
1.scanf不能接受空格、制表符Tab、回车等;对末尾回车符的处理:把回车符保留在缓存中。gets能够接受空格、制表符Tab和回车等;对末尾回车符的处理:接收回车,但把回车替换为\\0。2.scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\\0',但是回车,空格和tab键仍会留在输入的缓冲区中。gets...

scanf和&有什么区别?
&是取地址,scanf读取变量的时候,参数需要的是变量的实际内存地址,了解C语言指针的概念后就会明白,地址就是指针,指向变量的数据内容。不过一般%s是不会用&取地址的,因为字符串类型本身就是指针,不需要再进一步取地址。

C语言中的scanf是什么意思
C语言中的scanf函数是一种至关重要的标准库函数,它主要用于从用户处接收数据。这一函数与printf函数一样,都在stdio.h头文件中定义,使用前需包含此头文件。它的作用是根据预先设定的格式,从键盘读取数据并将其存储到指定的变量中。scanf的函数格式是:intscanf(char*format,args,...);它的功能是...

scanf与printf的区别
区别:一、意义不同:1、scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include <stdio.h>。)它是格式输入函数,即按用户指定的格式从键盘...

宁河县19784944941: 关于scanf函数和printf函数的用法与区别(菜鸟级提问!!) -
邹栋节宗: 1.区别:scanf与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>.它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中.而printf()函数是格式化输出函数, 一般用于向...

宁河县19784944941: 请问C语言的int,printf和scanf各代表什么意思? -
邹栋节宗: 楼上的回答很直观.我再补充专业一点int 定义一个整形变量[数值在+32767到-32767之间]printf 打印,也叫输出.相当于 Cout<<scanf() 读入其中允许的字符并赋给对应字符数组.

宁河县19784944941: c语言中scanf和printf都是输出函数,两者有什么区别呢 -
邹栋节宗: scanf是输入函数 printf是输出函数

宁河县19784944941: 通俗地解释一下c语言中“printf”和“scanf”所代表的意思 -
邹栋节宗: printf是c语言标准输出函数,例如pintf(“你好”);输出"你好". scanf是c语言标准输入函数,例如scanf(“%d”,&a);,键盘输入一个整型数赋值给变量a.

宁河县19784944941: c语言 scanf代表什么意思?和printf有什么区别? -
邹栋节宗: printf是输出scanf和printf都是函数名称,具体定义在stdio.h文件中写明 使用函数名用来区分调用不同的子程序(函数),scanf是标准输入,一般来说是接收键盘的输入到程序指定的变量或内存

宁河县19784944941: printf和scanf的区别 -
邹栋节宗: scanf()是C语言中的一个输入函数.与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>.它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中.printf()函数是格式化...

宁河县19784944941: 有谁告诉我 c语言中printf和scanf这两个函数都是输出有什么区别吗 -
邹栋节宗: printf(): 产生格式化输出的函数printf函数的一般形式为:int printf(const char *format,[argument]);以上形式,我们在Visual C++里输入“printf(”将会看到.说明printf函数类型为整型,其返回值是整型值.其值实际为printf控制输出的字...

宁河县19784944941: 在c语言中scanf函数和printf函数具体怎么用,还有这两者的区别是什么? -
邹栋节宗: 1.如scanf("%d",i)中只要前面是%d,后面i不管是什么类型?都按指定的格式(整形)输出? 2.如printf("%d",i)中i必须是前面规定的类型(整型)? 如果我直接printf(i)就不对?假设对的话,这个意思就是输出变量名i?] 而printf("%d",i)就是输出变量值的意思? 那么第一个"%d"就是帮助程序(或者格式化)获取一个需要的类型的值? 那么第二个"%d"就是告诉计算机输出的变量的值是个整形?

宁河县19784944941: scanf跟printf有什么区别? -
邹栋节宗: scanf是实现从键盘输入的,而printf则是输出内容到显示器上 不一样的 scanf函数,与printf函数一样,都被定义在stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>.它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意. printf功 能:产生格式化输出的函数 用 法:int printf(const char *format,[argument]);format 参数输出的格式,定义格式为:%[flags][width][.perc] [F|N|h|l]type

宁河县19784944941: C语言中 printf scanf怎么理解? -
邹栋节宗: scanf就是读入啊,printf就是输出啊,两个都是有固定用法的.比如对于int型数据, int a = 2; scanf("%d", &a)就是读入一个值到a中,printf("%d", a)就是输出a到屏幕

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网