精华内容
下载资源
问答
  • 1、测试使用scanf的一个例子: #include "stdio.h" #include "string.h" int main() { char name[10]; scanf("%s", name); puts(name);...可以看到第二次,由于输入的字符串长度,导致Abort ...

    1、测试使用scanf的一个例子:

     

     

    #include "stdio.h"

    #include "string.h"

    int main()

    {

     char name[10];

     scanf("%s", name);

     puts(name); 

     return 0;

    }

     

    编译、调用如下:

     

     

     

    可以看到第二次,由于输入的字符串长度,导致Abort

     

     

     

     

     

    2、同样的一个fgets的例子:

     

    #include "stdio.h"

    #include "string.h"

    int main()

    {

     char name[10];

     fgets(name, 10, stdin);

     puts(name); 

     return 0;

    }

     

    编译、调用如下:

     

     

    并没有像scanf那样出现Abort的情况,而是对字符串进行了截断

     

     

     

     

    3、对比scanf和fgets:

     

    a) scanf不限制用户的输入,导致会出现上面测试例子的Abort

     

    fgets限制用户的输入,超过之后进行截断字符串的操作,避免了Abort,但是要设置一个缓冲区长度值

     

     

     

    b) scanf可以使用诸如scanf("%d/%d", &x, &y),这样的形式,让用户只需要输入1/3便可以分别得到x、y的值:

     

    #include "stdio.h"

     int main()

    {

     int x;

     int y;

     scanf("%d/%d", &x, &y);

     printf("x value : %d, y value : %d\n", x, y);

     return 0;

    }

     

     

    但是fgets,无论如何,每次都只能读入一个变量,而且只能是字符串(毕竟说是str嘛!),像下面这样的形式,编译是通不过的:

     

    #include "stdio.h"

     int main()

    {

     int x;

     fgets(x, sizeof(x), stdin);

     printf("x value : %d", x);

     return 0;

    }

     

     

     

     

     

    c)字符串中的空格

     

    scanf用%s接收字符串的时候,遇到空格就会停止。如果想输入多个单词,需要多次调用scanf()

     

    fgets()直接接收字符串中的空格

     

     

     

     

    4、总结

     

    由于3提到的一些区别,所以在使用scanf()和fgets()的时候,要注意情况。

     

    转载于:https://blog.csdn.net/zengraoli/article/details/19540153

    转载于:https://www.cnblogs.com/Frank-dev-blog/p/9465398.html

    展开全文
  • ``` /* zheng int is divided yinshu*/ #include "stdio.h" #include "conio.h" ...代码是没有问题的,我有个地方不太明白,scanf输入这块执行的时候,值不能都输进去。好奇怪。编译器也没有报错滴啊
  • (二)C语言——数据输入语句scanf()函数 输入语句是动态赋值,即在程序运行过程中接受输入数值。与数据的输出一样,C语言也提供了标准的数据输入函数。 1.scanf()函数的一般格式 scanf()函数的一般格式为: scanf...

    (二)C语言——数据输入语句scanf()函数
    输入语句是动态赋值,即在程序运行过程中接受输入数值。与数据的输出一样,C语言也提供了标准的数据输入函数。
    1.scanf()函数的一般格式
    scanf()函数的一般格式为:
    scanf(格式控制字符串,输入项表);
    其功能是按照指定的格式接收由键盘输入的数据,并存入输入项变量所在的内存单元中。其中的格式控制字符串构成的内容与printf()函数类似,包含格式说明和普通字符。输入项表中的各输入项用逗号隔开,各输入项必须为地址引用,通常由“&”后面跟变量名组成或者是数组、字符串的首地址。
    例如,对于“scanf("%d%f",&n,&f);”语句,“%d%f”是格式控制字符串,&n和&f分别表示n和f的地址,这个地址是编译系统在内存中给n和f变量分配的。同时,要注意输入时在两个数据之间要用一个或多个空格分割,也可以用回车键、跳格键Tab。如输入时可以采用:
    8
    9.2
    则8和9.2分别存入变量n和f所在的内存单元中。
    2.scanf()函数的格式字符
    格式字符用于规定相应输入项的输入格式,每个格式说明都必须用“%”开头,以一个“格式字符”作为结束。允许用于输入的格式字符和它们的功能如下表所示。

    格式字符 说明
    d 输入十进制数
    o 输入整数,整数可以是带前导0的八进制数,也可以是带前导0x(或0X)的十六进制数
    x,X 以十六进制形式输入整数(有无前导0x或0X均可)
    u 输入无符号十进制整数
    c 输入一个字符
    s 输入字符串
    f 以小数形式或指数形式输入实数
    e,E,g,G 与f的作用相同

    说明:
    (1)%o,%x用于输入八进制、十六进制的数。例如:
    scanf("%o%x",&a,&b);
    printf("%d,%d",a,b);
    若输入为12 12 或012 0x12,则得到的结果为10,18。
    (2)输入数据宽度:在格式字符前可以用一个整数指定输入数据所占的宽度,由系统自动截取所需数据。例如:
    scanf("%3d%3d",&x,&y);
    printf(“x=%d,y=%d”,x,y);
    若输入123456,则得到的结果为:
    x=123,y=456
    即系统自动截取前3位数据赋给变量x,继续截取3位数据赋给变量y。
    但是,在输入实数型数据时,不允许指定小数位的宽度,这一点有别于printf()函数。例如,“scanf(“%5.2f”,&x);”是错误的,不能用此语句输入2位小数的实型数。
    (3)类型修饰符:h和l,分别表示输入短整型数据和长整型数据(或双精度实型数)。
    例如:
    scanf("%ld%lo%lx",&x,&y,&z);
    scanf("%lf%le",&a,&b);
    scanf("%hd%ho%hx",&m,&n,&k);
    (4) * 表示空过一个数据。例如:
    scanf("%d%*% d",&x,&y);
    若输入为3 4 5 ,则得到的结果为
    x=3,y=5
    (5)对于unsigned型的数据,用%u,%的,%o,%x输入皆可。
    3.使用scanf()函数时应注意的问题
    (1)输入项表只能是地址,表示将输入的数据送到相应的地址单元中;所以对于基本类型变量,一定要加“&”,而不能只写变量名。
    (2)当调用scanf()函数从键盘输入数据时,最后一定要按下回车键,scanf()函数才能接受从键盘输入的数据。当从键盘输入数据时,输入的数据之间用间隔符隔开,间隔符个数不限。
    (3)在“格式控制字符串”中,格式说明的类型与输入项的类型应一一对应匹配。
    (4)在“格式控制字符串”中,格式说明的个数应该与输入项的个数相同。若格式说明的个数少于输入项的个数时,多余的数据项并没有从终端接收新的数据;若格式说明的个数多于输入项的个数时,多余的格式说明将不起作用;
    (5)如果在“格式控制字符串”中插入了其他普通字符,这些普通字符不能输出到屏幕上。但在输入时要求按一一对应的位置原样输入这些字符。
    (6)在用%c格式输入字符时不需要分割符将各字符分开。
    (7)某一数据输入时,遇到下列输入则认为,遇到下列输入则认为当前输入结束:
    遇到空格、回车键、跳格键时输入结束。
    到达指定宽度时结束,如为“%3d”,则只取3列。
    遇到非法输入时结束。例如
    scanf("%d%c%f",&x,&y,&z);
    如果输入为1234k543o.22,则得到:
    x=1234,y=‘k’,z=543
    遇到字母o认为非法,数据输入到此结束。

    展开全文
  • c语言输入语句

    千次阅读 2020-01-28 20:11:48
    c语言输入语句为如下格式: scanf(“%d%d”,&a,&b); 输入a,b的值时使用空格分开或是使用换行(回车) 若输入语句为如下格式: scanf(“%d,%d”,&a,&b); 输入a,b的值时必须使用“,”隔...

    若c语言输入语句为如下格式:

    scanf(“%d%d”,&a,&b);

    输入a,b的值时使用空格分开或是使用换行(回车)

    若输入语句为如下格式:

    scanf(“%d,%d”,&a,&b);

    输入a,b的值时必须使用“,”隔开,否则编译器没有错误,结果有误。

    例子:计算整数的四则运算:

    #include<stdio.h>

    int main()
    {
        int a,b;
        scanf("%d%d",&a,&b);
        printf("%d + %d = %d\n",a,b,a+b);
        printf("%d - %d = %d\n",a,b,a-b);
        printf("%d * %d = %d\n",a,b,a*b);
        printf("%d / %d = %d\n",a,b,a/b);
        return 0;
    }

    使用空格

    使用回车

    改变输入方式:

    #include<stdio.h>

    int main()
    {
        int a,b;
        scanf("%d,%d",&a,&b);
        printf("%d + %d = %d\n",a,b,a+b);
        printf("%d - %d = %d\n",a,b,a-b);
        printf("%d * %d = %d\n",a,b,a*b);
        printf("%d / %d = %d\n",a,b,a/b);
        return 0;
    }

    使用“,”隔开

    使用空格出现错误

    c语言默认的输入方式为使用空格或回车分隔开数据;若输入语句格式改变,在输入时应与之相对应,否则出现错误。

    展开全文
  • C语言使用scanf语句输入字符串或者在for循环向字符数组中输入出现scanf语句不执行 例如简单地向字符数组中添加字符 #include&lt;stdio.h&gt; int main() { char he[10]; int i; for(i = 0; i &lt; 3;...

    C语言使用scanf语句输入字符串或者在for循环向字符数组中输入出现scanf语句不执行

    例如简单地向字符数组中添加字符

    #include<stdio.h>
    int main()
    {
    	char he[10];
    	int i;
    	for(i = 0; i < 3;i++)
    	{
    		scanf("%c",&he[i]);
    	}
    	return 0;
    }
    

    for循环中应该输入3个数据,但是只能输入2个字符数据
    原因在于:
    scanf语句输入时,回车键留在了缓冲区,下次输入时,自动将回车键输入导致只能输入两个数据;
    解决办法:
    在scanf语句前面或者后面加入getchar();语句来清除缓冲区中的回车符。

    展开全文
  • <code class="language-cs"> char address[30]; printf("请输入储存文件名:\n"); scanf("%s",address);...为什么上面那个代码总是打不开文件 把语句调换了就可以打开了。。</p>
  • C语言中输出语句scanf() ``` scanf("%d%d",a,b) ``` 和 ``` scanf("%d,%d",a,b) ``` 后者输入的时候在两个值间加上, 这两种输入有区别吗? 或者第二种输入方式是什么原理?
  • 今天利用共同体变量写了一个小程序要求:有若干人员的数据...编译通过后运行程序,发现输出有问题,通过调试发现问题出现在scanf语句中,原本的scanf语句scanf("%d %s %c %c",&person[i].num,&person[i].name,&perso
  • 现象描述:在编写C语言程序时,需要使用scanf语句从键盘上输入一个整型的数时,当错误的输入了字符时,scanf语句就好像不会执行,但从键盘输入其他数字又无法获取。 问题分析:当定义scanf语句接收整型数值时,它就...
  • scanf_s("%s", bArray); printf("bArray is %s\n",bArray); system("pause"); } ``` 运行后这个样子 ![图片说明](https://img-ask.csdn.net/upload/201909/22/1569157077_945479.png) 输入一个数,回车...
  • scanf() 函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息 scanf_s()用于读取字符串时,必须提供一个数字以表明最多读取多少位字符,以防止溢出 ...
  • 比如输入I am your friend,然后倒序输出:输入语句scanf("%[^\n]",x.a); C语言中scanf()函数提供的“%[]”格式串可以用来进行多个字符的输入,并对结束符进行自定义。对于%[]还可以用^+任意字符(例如回车...
  • #include <stdio.h> int main(void) { int i; scanf("%d", &i); printf("i = %d\n", i); return 0; } 在 VC++ 6.0 中的输出结果是: a i = -858993460 ...为什么输入 a,变量 i 却显示未初...
  • 如果在循环结构中使用scanf函数循环输入char类型数据且还要换行输入下一次时,要注意在下一次scanf调用之前使用getchar函数,以免程序把当次使用scanf之后的换行误当成了要输入的字符数据。如果在此基础上,如果在...
  • 上一篇文章演示的是最简单的C语言程序代码,学习C语言需要记忆固定的语法,就像是学英语一样,这一篇是第二篇,学习输入输出语句。 #include<stdio.h> int main() { int i;//首先用int定义一个整形变量 ...
  • C语言中的scanf()函数

    2015-02-25 13:50:53
    在用c语言编写输入语句的时候常用到scanf函数,初学者在刚用scanf函数输入时,经常会遇到各种各样的输入错误,最重要的是一定要记住scanf函数的输入格式,scanf函数里包含了哪些东西,输入的时候就必须有哪些东西,...
  • ``` #include #include int main() { int month=0;... int days[]={31,28,31,30,31,...以上是我的全部代码,执行scanf语句的时候,在输入第一个整数后,输入逗号,在输入第二个整数,会吃掉第一个数字,这是为什么呢
  • 简单的C语言语法-scanf

    2015-08-30 21:29:54
    有定义语句: 1 2 ...则正确的输入语句是______。 scanf("%d%s",&b,&c); scanf("%d%s",&b,c); scanf("%d%s",b,c); scanf("%d%s",b,&c); 上述选项经过测试后,A
  • C语言输入输出语句

    万次阅读 2018-04-27 13:54:03
    一:控制台输入输出 (1)字符数据的输入/输出 字符输出 putchar(ch); 字符输入 getchar(ch); (2)格式化输入/输出 ... 格式输入 scanf(“格式控制字符串”,地址列表); (3)字符串的输...
  • c语言scanf输入字符We have to read tree values: integer, float and then character using only one scanf() function and then print all values in separate lines. 我们只需要使用一个scanf()函数读取树值:...
  • C语言中switch语句,switch(表达式)中,这个表达式是什么意思?对于下面这个程序:/*一个具有两个数加减乘除功能的计算器*/#include "stdio.h"void main(){int iFirNum,iSecNum,iResult;char ch,ch1;printf("请输入...
  • ###C语言scanf的用法 scanf("%d %c",&a,&b); & :取地址符一定不能忘 #include<stdio.h> #include<stdlib.h> int main() { int a; char n; scanf("%d %c",&a,&n); ...
  • C语言scanf语句吃掉回车或者空格问题详解

    万次阅读 多人点赞 2019-10-18 14:41:07
    我们经常在C语言输入的时候,会发现scanf讲空格或者回车“吃掉”了,导致程序的运行结果与预期不一致,以下面一个简单例子为例 #include<stdio.h> char str[10]; int main() { int i; for(i=0;i&...
  • reference:Python 实现C语言 while(scanf("%d%d", &a, &b) != EOF) 语句功能 在python中,无法通过input()的返回值判断是否有EOF。python是通过抓取异常来知EOF的,于是,通过try except的方法,当出现...
  • 众所周知,scanfc语言中扮演着输入的角色,但小狼上次突然想到一个好玩的 即下面这段代码 int a,k; k = scanf("%d",&a); printf("k = %d,a = %d",k,a); 这个问题对于老司机们来说肯定很容易,但这往往也会是...
  • C语言 实验一 1.判断是否能构成三角形及是否为等边或等腰 程序 #include<stdio.h> int main() { int a, b, c; printf("请输入你的第一个数:"); scanf_s("%d", &a); printf("请输入你的第二个数:"); ...
  • 近日,在敲代码时,发现如果如果两个scanf语句叠加在一起的话,在输入界面输入只一个字符时,第二个scanf语句会读取你输入的回车键,导致第二个scanf语句无法发挥正常的效果。 #include <stdio.h> int main(){...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 983
精华内容 393
关键字:

c语言输入语句scanf

c语言 订阅