精华内容
下载资源
问答
  • scanf读取含空格的字符串

    万次阅读 多人点赞 2018-07-14 23:44:13
    scanf()函数接收输入数据时,遇以下情况结束一个数据的输入: ...scanf接收包含空格的字符串 #include <stdio.h> int main() { char str[80]; scanf...

    scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:

    ① 遇空格、“回车”、“跳格”键。
    ② 遇宽度结束。
    ③ 遇非法输入。

    scanf接收包含空格的字符串

    #include <stdio.h> 
    int main() 
    { 
        char str[80]; 
    
        scanf("%s",str); 
        printf("%s",str);
        return 0; 
    }


    输入:I love you!
    输出:I
    原因:scanf遇空格结束读取。

    解决:

    #include <stdio.h> 
    int main() 
    { 
        char str[80]; 
    
        scanf("%[^\n]",str); //读到'\n'结束读取
        printf("%s",str);
        return 0; 
    }


    输入:I love you!
    输出:I love you!


    //读到'\n'结束读取,存入str,再抛弃一个字符
    scanf("%[^\n]%*c",str);
    //读到'\n'结束读取,并将其读到的数据抛弃,然后再抛弃一个字符(这个字符是'\n')
    //此时缓存中不存在任何字符
    scanf("%*[^\n]%*c");
    int c;
    while((c=getchar())!='\n'&&c!=EOF); 
    //读取一个字符,直到是\n或者是EOF停止
    //等价于
    scanf("*[^\n]");
    
       #include <stdio.h>
       int main()
       {
           char  c;    
           //直到遇到字符a停止读取,
           //舍弃a
           //读取将a后的一个字符存入变量c
           scanf("%*[^a]%*c%c",&c);
           printf("%c\n",c);
           return 0;
       } 

    输入:bcdeaf
    输出:f

    展开全文
  • scanf读入空格

    千次阅读 2018-05-21 11:00:20
    char s[100]; scanf("%[^\n]", &amp;s);
    char s[100];
    scanf("%[^\n]", &s);

    展开全文
  • 如何使用scanf输入带空格的字符串

    千次阅读 2019-12-23 00:25:45
    学过字符串,我们都知道当输入一串带空格的字符 ...由运行结果我们可以看出,它遇到空格就停止读入了。 So 我们一般都选择用gets函数来读入一个带空格的字符串 就像这样 gets(str); 运行...

    学过字符串,我们都知道当输入一串带空格的字符
    (通俗的说,就是英语中由一个个单词组成的一句话)时,举个例子,比如my name is aeiou
    如果你用scanf直接输入的话,
    像这样

     scanf("%s",str);
    

    结果是这样的…

    my
    

    由运行结果我们可以看出,它遇到空格就停止读入了。
    So 我们一般都选择用gets函数来读入一个带空格的字符串
    就像这样

     gets(str);
    

    运行出来是这样的

    my name is aeiou
    

    这是因为gets可以读入空格,遇到回车才会停止;而scanf遇到空格、回车和Tab键都会认为输入结束,所以它是不能接收空格的。
    但是我们都知道gets是不安全的(尽管我现在还没有遇到过这种情况,但是C++认为gets是不安全的)
    So 如果你想用scanf输入一个带空格的字符串的话,也不是不可以,下面就来说一下怎么用。
    我们可以这样写

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

    这样的话运行结果是

    my name is aeiou
    

    不要问为什么,记住这个[^\n]就行了,如果实在想知道的话可以去搜百度
    但是你会发现一个问题
    请看这个代码(这是一个统计元音字母的题的完整代码)

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int n;
        scanf("%d",&n);
        getchar();
        while(n--) 
        {
         char str[105];
         int f[5]={0};
         scanf("%[^\n]",str);
         int i;
         for(i=0;str[i]!='\0';i++)
         {
          
          if(str[i]=='a')
          {
           f[0]++;
       }
       else if(str[i]=='e')
       {
        f[1]++;
       }
       else if(str[i]=='i')
       {
        f[2]++;
       }
       else if(str[i]=='o')
       {
        f[3]++;
       }
       else if(str[i]=='u')
       {
        f[4]++;
       }
         }
      printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n",f[0],f[1],f[2],f[3],f[4]);
      if(n!=0)
      {
       printf("\n");
      }
     }
     return 0;
    }
    
    
    

    你会发现运行结果是完全错误的,是不是满脑子充满了问号;其实真正的罪魁祸首就在于回车键,因为我们知道gets对末尾回车符的处理是接收回车并把回车替换为\0,而使用scanf时其会将末尾的回车符保留在缓存当中,所以在用其输入字符串时一定要加一个getchar去吃掉回车符,或者也可以用:

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

    这样运行结果也是正确的

    展开全文
  • scanf("%c%c",&a,&b)"; 如果输入:a b 那么a=a,b=空格 所以如果输入形式为:a b 这种一个一个字符输入并且字符之间用空格隔开的时候要用 scanf("%c %c",&a,&b)"; 这种输入之中就有空格的形式 ...
    scanf("%c%c",&a,&b)";
    

    如果输入:a b
    那么a=a,b=空格
    所以如果输入形式为:a b
    这种一个一个字符输入并且字符之间用空格隔开的时候要用

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

    这种输入之中就有空格的形式

    如果输入一个N,然后输入N行字符

    scang("%d",&N);
    while(N--)
    {
    	scanf("%c %c",&a,&b);
    }
    

    输入:
    3
    a b
    c d
    e f
    最终N=3;
    第一个循环时,a=回车,b=a
    即while中的scanf把输入N之后的回车也接收了

    展开全文
  • scanf空格的读取

    2021-02-20 00:25:41
    只有%c能读取到空格字符,其他占位符豆浆空格作为结束判断标志。 %d以空格作为结束标志,%c读到空格字符,%s以第二个空格字符作为结束标志。
  • scanf读入空格字符串

    千次阅读 2019-10-06 20:04:47
    当不支持gets时,getline又比较慢,可以使用scarf("%[^\n]s", str);来读入以换行表示读完的字符串,其中[^char]表示以char为结束。 转载于:https://www.cnblogs.com/AlphaWA/p/11379939.html...
  • scanf读入数据的时候,scanf一般 是以制表符,空格符和换行符作为读入完成为标志的,但是如果我们必须要读入这些怎么办? scanf("%[^\n]"); /*****************************************************************...
  • 关于scanf不能读入回车和空格

    千次阅读 2020-03-10 21:46:02
    最近在OJ上编程时发现,scanf不能读入回车和空格两个字符,需要用getchar来读入,程序如下: #include<cstdio> #include<iostream> using namespace std; int main() { int n; char a,b; scanf("%d...
  • 也许很多人都会遇到这样的问题,就是用scanf以%s的格式输入字符串时,我们明明可以一直持续输入。 但是,最后真正读取的却只有第一次空格以前出现的东西。 这是因为scanf只有在遇到\n,也就是是回车时才结束输入,...
  • scanf 无法读入空格

    千次阅读 2012-03-15 17:49:36
    scanf不是不显示空格, 而是用scanf接收字符串的话, 在串首遇到空格的话,跳过,继续寻找下一个非空格字符, 在串中遇到空格时,结束字符串的输入。 所以如果用户输入" abcd efg"的话, scanf取得的字符串为...
  • 原文见链接c语言中怎样用scanf()读入空格的字符串 原文见链接c++输入(空格)
  •   楼主 发表于: 2011-01-14 15:39:55 #include &lt;stdio.h&gt; int main(void){ int i; char a[5];... scanf("...运行输入hello world 回车则输出的只是空格之前的部分,怎样...
  • scanf空格

    2021-03-03 20:52:34
    1.scanf的%c格式可以读入空格和换行 例: #include<cstdio> int main(){ int a; char c,str[10]; scanf("%d%c%s",&a,&c,str); printf("a=%d,c=%c,str=%s",a,c,str); return 0;} 2.字符数组使用...
  • 空白符可以空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白符使 scanf() 在输入流中读,但不保存结果,直到发现非空白字符为止 ANSI C 标准向 scanf() 增加了一种新特性,称为扫描集(scanset...
  • 1、使用gets()遇到空格不会终止从缓冲区中读取数据 2、scanf(“%[^\n]”,str); ^\n 表示非\n 当遇到非\n的字符时就读入
  • 经常读入数据的时候,会遇到scanf读入数据带有间隔情况,如下: 输入:x x x 或者 x x x 此时只有一个或者多个空格,那么: 解决方法: 使用cin 或者使用 scanf(" %c",&c); ' '是可以忽略一个或者多个空格 #...
  • 可以看到,它把每一个空格都当成了一个断句,也就是说scanf遇到空格或回车就认为这个句子已经输完了,空格后面的就是下一句话的内容。然而这并不是我们想要的,我们希望它它能完整地读完一句话,遇到回车表示结束。 ...
  • scanf输入字符串遇到空格

    万次阅读 多人点赞 2019-06-02 12:34:49
    使用scanf时对空格处理?问题描述解决办法总结 问题描述 scanf输入字符串(含有空格的字符串,例如:“I love you!”)时,总是在空格处停止扫描。我们用scanf("%s",str);输入 “I love you!” 字符串后,str输出却...
  • scanf通过%s读取字符串时,当遇到空格之后,就会匹配结束,这样无法将一行带有空格的字符串存入一个字符数组当中。 解决方法: 使用gets函数进行读取 gets函数的格式如下: char *gets(char *str) gets函数从...
  • 1.读入空格的字符串 scanf("%[^\n]", &string); []内是匹配的字符,^表示求反集。该语句表示只要不是kongg
  • scanf 跳过空格

    千次阅读 2018-06-28 16:32:39
  • c)在%c之前空格会告诉scanf忽略前面的空行,而等待第一个非空行元素读入其中。  修改scanf处,加上空格后程序运行就正常了。 原文链接:https://blog.csdn.net/qiye005/article/details/46650933/ ...
  • 字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。 输出格式: 输出占一行,输出倒序后的句子。 输入样例: Hello ...
  • scanf函数使用空白(换行符,制表符,空格)把输入分为多个字段,在依次把转换说明和字段匹配时跳过字符,首先你要知道什么是转换说明(%d,%f等),但唯一例外的是%c,根据%c,scanf会读取每一个字符,包括空白。...
  • 使用scanf循环读入数据

    千次阅读 2019-07-24 15:50:35
    使用scanf循环读入数据 循环读入数字 #include<stdio.h> int main(){ int n; while(scanf("%d",&n) != EOF){ printf("%d",n); } return 0; } 循环读入字符串 #include<stdio.h> int main...
  • C语言中scanf函数与空格回车

    万次阅读 多人点赞 2013-11-08 23:21:21
    众所周知,C语言中的scanf函数的作用是从标准输入设备(通常是键盘)读取输入值,并存储到参数列表中指针所指向的内存单元。下面从几个方面说一下一些稍微细节的东西。下面的实验都在vc6.0中通过。 1、scanf的返回值 ...
  • 一、什么是scanf语句? 它是格式输入函数,即按用户...可以读取对应类型的数值并且存储到指定的变量,并且可以读取多个数值,如数字,字符,字符串等,每次用到scanf‘时,都会从数据缓存区读取一个或多个字符,并存.
  • 关于scanf空格或者‘\n‘问题

    千次阅读 2020-09-25 21:30:00
    被学弟学妹问倒,哎呀呀,...那为啥子不推荐在scanf("")里面写’\n’呢主要是因为,你读整数,小数的时候人家c 会很主动地帮你忽略’\n’空格等制表符啊,人家都那么主动了,你还忍心多此一举,你你你,哎呀呀,(注意:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,486
精华内容 10,194
关键字:

scanf可以读入空格吗