精华内容
下载资源
问答
  • 满意答案vera6792014.02.08采纳率:40%等级:12已帮助:4961人举几个例子,或许你就...scanf("%d%d",&a,&b);此时的输入方式可以是1空格2或者1空格空格。。2或者1回车2或者1回车回车。。2此时可以得出结论,s...

    满意答案

    02ae427d08e371d7e90d5b995e828d6d.png

    vera679

    2014.02.08

    02ae427d08e371d7e90d5b995e828d6d.png

    采纳率:40%    等级:12

    已帮助:4961人

    举几个例子,或许你就对这个函数理解了,由于一般都是用这两个字符控制输入的,所以只讨论空格回车的情况

    1.输入数据为非char类型的情况:

    int a, b;

    scanf("%d%d",&a,&b);

    此时的输入方式可以是1空格2

    或者1空格空格。。2

    或者1回车2

    或者1回车回车。。2

    此时可以得出结论,scanf接收不但忽略空格还忽略回车

    int a, b;

    scanf("%d,%d",&a,&b);

    此时的输入方式可以是1,空格2

    或者1,空格空格。。2

    或者1,回车2

    或者1,回车回车。。2 (只需要保证1紧接着逗号就行,随便奇葩的输入都正确)

    此时可以得出结论,scanf接收不但忽略空格还忽略回车,但是在有逗号的情况下必须遵循一定的格式,否则出错。

    2.再看输入数据为char类型的情况:

    char a, b;

    scanf("%c%c",&a,&b);// 或者scanf("%c,%c",&a,&b);

    此时的输入只能按格式来,不会忽略任何字符。

    就说这么多了,可能你考虑的比较多,我有没说到的,若有疑问可以提出来一起讨论下

    00分享举报

    展开全文
  • C语言scanf()函数返回值的问题文章来源:365jz.com 点击数:386更新时间:2018-06-02 11:23 参与评论1.scanf()函数有返回值且为int型。2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值...

    C语言scanf()函数返回值的问题

    文章来源:365jz.com     点击数:386    更新时间:2018-06-02 11:23   参与评论

    1.scanf()函数有返回值且为int型。

    2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

    scanf("%d%d", &a, &b);

    如果a和b都被成功读入,那么scanf的返回值就是2

    如果只有a被成功读入,返回值为1

    如果a和b都未被成功读入,返回值为0

    如果遇到错误或遇到end of file,返回值为EOF。

    不经意中发现scanf()的返回值问题,自己试验和了解了一下,一些所知与各位分享;

    void main()

    {

    int a;

    int b;

    int c;

    printf("请输入三个整数:");

    int x=scanf("%d%d%d",&a,&b,&c);

    printf("%d/n%d/n",a,x);

    }

    1.scanf()函数有返回值且为int型。

    2.scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。

    从上边的例子中可以得到验证,这里用变量x接收scanf()函数的返回值,并输出显示出来。

    当运行中输入三个整数:5 6 7则x的值为3;

    如果输入5 6 d(即给c 赋值不正确)则x的值为2;

    如果输入5 t d(即给b和c 赋值不正确)则x的值为1;

    当scanf函数的第一个变量格式不正确时返回值为0,即,当scanf函数的第n个变量格式不正确时,返回值为n-1

    continue:

    以前学习的时候书上说的是scanf()的返回值等于得到输入值的输入项的个数

    scnaf(格式控制,输入项表);

    照以上一般形式来看的话

    main()

    {int a,b,i;

    i=scanf("%d%d%d",&a,&b);

    printf("%d",i);}

    应该输出2,因为就a和b两个输入项得到值了。

    但是结果却是3

    为什么?

    这样的话是不是应该说成得到输入数据的格式说明的个数?

    是3,因为是3个%d,输入项的个数是3个,不过是进了缓冲区3个,两个被赋值了,一个扔掉了而已。

    那scanf()的返回值应该是进缓冲区的数据的个数,或是说得到输入数据的格式说明的个数,对吗?

    像这样scanf("%d%d%d"如果输入1 2 3那返回值就是3,要是输入1 a 那返回值就是1因为只有第一个%d得到数据了,对吗?

    scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。

    如果输入数据与指定格式不符,则会产生输入错误。遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。

    所以,通过scanf函数的返回值和指定输入数据的个数(由格式符决定)的比较,可以判断数据输入是否成功。

    就楼主的这个程序而言,是一个错误的程序,会导致segmentation fault,

    因为没有有效的地址接受这个输入的第三个数,whyglinux的解释是正确的,

    如果程序可以正常的继续下去执行的话,返回值应该是2.

    具体你的程序为什么能够返回,我不知道,我用的是gcc,winxp,运行的时候segmentation fault.

    1. scanf 函数是有返回值的,它的返回值可以分成三种情况

    1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b);

    如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量);

    如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。

    2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。

    3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。

    所以可以使用下面的代码来处理输入:

    while (scanf("%s %c %c", str, &oldchar, &newchar) == 3) /* 或!= EOF , 但前者更好 */

    {

    ; //处理

    }

    2. 为什么前面 scanf 的格式串里面,%s和%c中间需要空格呢?

    那是因为如果没空格的话。。。oldchar输入的就是空格了= =.

    3. 顺便说一下,printf的返回值是输出的字符数,例如,printf("1234")的返回值是4,而printf("1234\n")的返回值是5。

    以下内容原创:

    不知道有木有这样写的习惯while (~scanf("...."))。这里出现了~这个符号,这个是位运算取反的意思。因为~(n)=-(n+1)。所以这里scanf的返回值为-1时~(-1)=0才退出循环。这就是这样写的意思。

    如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

    发表评论

    (386人查看,0条评论)

    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

    用户名:

    验证码:

    36f0346f831be89f1d05a5e748bc6e4a.png

    匿名?

    发表评论

    最新评论

    ------分隔线----------------------------

    展开全文
  • scanf()在读取字符串时,遇到第一个空白(空格、制表符、换行符)就停止读取输入,所以有可能只会读取字符串的第一个单词
    scanf()在读取字符串时,遇到第一个空白(空格、制表符、换行符)就停止读取输入,所以有可能只会读取字符串的第一个单词
    
    展开全文
  • 要输入带空格的字符串,要用到一个格式字符:%[] --> 一个字符集。“%[]”的作用是扫描字符集合:例如:scanf(“%[^\n]”,str);具体作用是:如果输入的字符属于方括号内字符串某个字符,那么就提取该字符;如果...

    要输入带空格的字符串,要用到一个格式字符:%[] --> 一个字符集。

    “%[]”的作用是扫描字符集合:

    例如:scanf(“%[^\n]”,str);

    具体作用是:如果输入的字符属于方括号内字符串中某个字符,那么就提取该字符;如果一经发现不属于就结束提取。该方法会自动加上一个'\0'到已经提取的字符后面。

    #include

    int main()

    {

    char str[81];

    printf("Please input a string:\n");

    scanf("%[^\n]",&str);

    printf("The string is:\n%s\n",str);

    return 0;

    }

    6917656d50b779dd19e9fa9e674c493d.png

    扩展资料:

    字符串函数应用:

    1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。

    例:concat(‘11’,'aa’)='11aa’。

    2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。

    例:copy(‘abdag’,2,3)=’bda’。

    3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。

    例:s:=’abcde’;delete(s,2,3);结果s:=’ae’。

    4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置。

    例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’。

    5. 求字符串长度 length(s) 例:length(‘12abc’)=5。

    在ASP中 求字符串长度用 len(s)例: len("abc12")=5。

    参考资料:

    百度百科-扫描集

    展开全文
  • C语言scanf函数一、变量的内存分析(一)字节与地址①.内存以字节为单位 每个字节都有自己的内存地址,根据地址就可以找到该字节。整个内存相当于一整个酒店,而酒店以房间为单位,在这里每个房间就相当于是每个字节...
  • c语言scanf用法

    万次阅读 多人点赞 2019-07-10 23:47:01
    C语言中scanf的用法和注意事项 内容参考:https://blog.csdn.net/hk_kang/article/details/78747726 scanf概念 scanf是格式输入函数,功能是在屏幕上输入指定的信息。简单的来说和printf相似却不相同。 scanf调用...
  • C语言scanf函数与空格

    万次阅读 2010-12-14 20:52:00
    | 问题描述一:(scanf()读入字符串空格) | ---------------------------------------------------- #include<stdio.h><br />int main() {  char a[777];  scanf("%[^/n]",&...
  • 的输入输出流,输入时会自动去掉空格,也就是说输入字符串时不能加空格,需要多个scanf, 而在输入字符时与数字不同,默认读取字符的后一个,如果不加空格,实际输入为空字符,所以没有显示,加上之后,会略过空...
  • 做题遇到直到n为0停止,中间又要输入gets,为了防止gets吃回车,便scanf中加了空格,即scanf("%d ",&n),结果就出现了输入0之后还需要再输入一个字符程序才会结束 #include <stdio.h> #include <stdlib....
  • C语言scanf函数

    2019-07-10 20:44:39
    C语言scanf函数 函数名:scanf 功能:实现格式化输入 格式:scanf(“<格式化字符串>”,地址表) scanf函数是通用终端格式化输入函数,它从标准设备键盘上读取信息,然后把信息输入任何有固有类型的数据...
  • C语言中scanf函数中空格的用处

    千次阅读 2019-02-14 21:55:58
    可能用多了C++语言吧,现在...是由于scanf中空格可以匹配的是一切空白字符,而且对于格式控制串最前面和最后面的空格,可以将缓冲区连续的空白字符当做一个匹配掉! void main() { char c; while (1) { pri...
  • C语言scanf_s()函数的用法

    万次阅读 多人点赞 2019-07-10 22:01:12
    C语言scanf_s()函数的用法 前言 今天开始学习C语言,看书学的挺快的,感觉也不能,就想着敲下代码,结果错误百出,差点不想学了,果然编程是敲会的。下面说说第一个程序遇到的问题与心得 scanf_s()前身——scanf() ...
  • scanfc语言中的作用是什么?c语言中scanf的作用是什么?,Scanf()是C语言的一个输入函数,作用是:从键盘获取用户输入,根据用户指定的格式从键盘将数据输入到指定的变量;基本语法格式是“scanf(‘格式字符’,...
  • c语言scanf相关

    2017-03-04 16:01:26
    c语言scanf相关1. 空格相关: 如果你用scanf()函数的话,遇到空格会返回; 如果需要输入一个字符串,但是有空格怎么办:但是有时候用该方法时,会提示gets不安全,怎么办?char str[10]; scanf ("%[^\n]%*c", ...
  • 考虑如下一小段程序: #include&lt;stdio.h&gt; int main() { int i = 0; int num[5];... scanf("%d ",&amp;num[i]); printf("num[%d]:%d\n",i,num[i]); } retu...
  • C语言中scanf函数与空格回车

    万次阅读 多人点赞 2013-11-08 23:21:21
    众所周知,C语言中scanf函数的作用是从标准输入设备(通常是键盘)读取输入值,并存储到参数列表指针所指向的内存单元。下面从几个方面说一下一些稍微细节的东西。下面的实验都在vc6.0通过。 1、scanf的返回值 ...
  • 比如我有这样一段代码: for (int i = 1; i <= 3; i++){ scanf("%f,%d\n", &d.coef, &d.expn);...输入完之前的任何一次按下空格键、Tab键、回车键,都不会被scanf读入,只要记得输入完
  • /* 转自:http://blog.csdn.net/wayne92/archive/2006/01/04/570487.aspx */曾经错的几个地方:(xpsp2,vc6.0环境下)1.空白符问题#includemain(){...scanf("%d/n",&a);// 这里多了一个回车符/nprintf("%d",a);re...
  • C语言scanf()解析

    千次阅读 2019-09-08 16:26:19
    C语言scanf()解析 从键盘到内存scanf原型scanf参数 不属于格式指令的字符 的作用空白字符非空白字符非空白字符在格式说明符后面非空白字符在格式说明符前面补充:参考网址: 从键盘到内存 键盘输入“a b c...
  • 它是在stdio.h声明的一个函数,因此使用前必须加入#include。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并将输入的数据赋值给对应的变量。原型:intscanf...
  • C语言scanf返回值

    千次阅读 多人点赞 2018-01-14 14:32:40
    scanf 函数是有返回值的,它的返回值可以分成三种情况 1) 正整数,表示正确输入参数的个数。例如执行 scanf(“%d %d”, &a, &b); 如果用户输入”3 4”,可以正确输入,返回2(正确输入了两个变量); 如果用户...
  • c语言scanf函数

    千次阅读 多人点赞 2018-11-28 12:09:46
    定义:scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到变量。 格式:scanf(“格式控制字符串”,地址表列); 例如:scanf(“%d”,&amp;amp;amp;amp;a); &amp;amp;amp;amp;是一...
  • C语言scanf函数以及缓存详解

    千次阅读 多人点赞 2018-08-21 00:18:27
    自学到C语言scanf(),printf(),getchar(),gets();的时候,我觉得这个几个函数并没有什么特别的难得,但是后来写程序的时候却出现了一些小错误总是解决不了;上网查了查,是对于C语言缓存的不理解,所以今天本篇博文就...
  • main() { ...输入一个数字再按空格会继续读入数字,如果输入的数据不足10个,怎么让它在输入完毕后按回车自动跳出循环? ---- #include #include int main() { int i,a[10]; char c; for(i=0
  • C语言 scanf 总结

    2014-01-04 11:15:22
    对于我这种C语言菜鸟程序员来说,一碰到输入第一想到的就是scanf,正是因为这样在scanf里吃了很多亏。好吧,这里帮自己总结一下: 函函数原型: 1 int scanf( const char *format, ... ); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,123
精华内容 19,249
关键字:

c语言scanf中的空格

c语言 订阅