精华内容
下载资源
问答
  • 如何让scanf()函数正确接受有空格的字符串?如: I love you!    #include  int main()  {  char str[80];  scanf("%s",str);  printf("%s",str);  return 0;  }  输入:...
    如何让scanf()函数正确接受有空格的字符串?如: I love you!
     
    

      

      #include <stdio.h>

      int main()

      {

      char str[80];

      scanf("%s",str);

      printf("%s",str);

      return 0;

      }

      输入:I love you!

      上述程序并不能达到预期目的,scanf()扫描到"I"后面的空格就认为对str的赋值结束,并忽略后面的"love you!".这里要注意是"love you!"还在键盘缓冲区(关于这个问题,网上我所见的说法都是如此,但是,我经过调试发现,其实这时缓冲区字符串首尾指针已经相等了,也就是说缓冲区清空了,scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中)。我们改动一下上面的程序来验证一下:

      #include <stdio.h>

      #include<windows.h>

      int main()

      {

      char str[80], str1[80], str2[80];

      scanf("%s", str); /* 此处输入:I love you! */

      printf("%s\n", str);

      Sleep(5000); /* 这里等待5秒,告诉你程序运行到什么地方 */

      /* 不是sleep(5)

      1,函数名是Sleep不是sleep。

      2,C/C++中,unsigned Sleep(unsigned)应该是毫秒ms.

      */

      scanf("%s", str1); /* 这两句无需你再输入,是对stdin流再扫描 */

      scanf("%s", str2); /* 这两句无需你再输入,是对stdin流再扫描 */

      printf("%s\n", str1);

      printf("%s\n", str2);

      return 0;

      }

      输入:I love you!

      输出:

      I

      love

      you!

      好了,原因知道了,所以结论是:残留的信息 love you是存在于stdin流中,而不是在键盘缓冲区中。那么scanf()函数能不能完成这个任务?回答是:能!别忘了scanf()函数还有一个 %[] 格式控制符(如果对%[]不了解的请查看本文的上篇),请看下面的程序:

      #include <stdio.h>

      int main()

      {

      char str[50];

      scanf("%49[^\n]", str); /* scanf("%s",string); 不能接收空格符 */

      printf("%s\n", str);

      return 0;

      }

    展开全文
  • scanf通过%s读取字符串时,当遇到空格之后,就会匹配结束,这样无法将一行带有空格的字符串存入一个字符数组当中。 解决方法: 使用gets函数进行读取 gets函数的格式如下: char *gets(char *str) gets函数从...
        当scanf通过%s读取字符串时,当遇到空格之后,就会匹配结束,这样无法将一行带有空格的字符串存入一个字符数组当中。
    

    解决方法:
    使用gets函数进行读取

    gets函数的格式如下:
    char *gets(char *str)
    gets函数从STDIN(标准输入)读取字符,并将它们加载到变量str之中,直到遇到换行符\n或到达EOF。gets会读取空格,且gets函数遇到\n后,不会存储\n,而是将其翻译为空字符’\0’

    puts函数的格式如下:
    char *puts(char *str)
    函数puts把字符串str写入STDOU(标准输出)。puts执行成功时返回非负值,执行失败时返回EOF,相当于printf函数,puts只能用于输出字符串,同时多打印一个换行符。

    展开全文
  • 我们用scanf()函数输入一个带空格的字符串函数时,经常会在第一个空格时就停止输入。下面有两种方法可以完整输入字符串1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。...

    我们用scanf()函数输入一个带空格的字符串函数时,经常会在第一个空格时就停止输入。

    下面有两种方法可以完整输入字符串

    1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。 

    Strcat()一般格式:char*strcat(char*dest,const char*src);  

    函数将字符串src连接到dest的尾端,并返回字符串dest的首指针。 

     #include “stdio.h” 

    #include “string.h” 

    #include “conio.h” 

    void main() 

     char *str,*s1,*s2; 

    clrscr();                            / /清屏
    scanf(“%s”,str);               //输入字符串 
    scanf(“%s”,s1);              //此后两个输入语句不需要用户进行输入

     scanf(“%s”,s2);     
    strcat(str,“”);     //连接一个空格 

    strcat(str,s1);     //连接单词 

    strcat(str,””);     //连接一个空格

    strcat(str,s2);     //连接字符串
    printf(“\n%s”,str);    //输出字符串str 

    }   

    2)利用格式符“%[]”它的作用为扫描字符集合。 

    Scanf(“%[^c]”,str); 
    其中“c”是一个具体的字符常量(包括控制字符)。

    当输入字符串时,字符“c”将被当作当前输入的结束符。

    如同默认情况下空格和回车键以及TAB键是作为字符串输入的结束符一样,利用此格式符便相当于由编程者自己指定一个输入结束符。 

    #include”stdio.h” 

    #include “conio.h” 

    void main() 


    char *str;

      clrscr(); 
    scanf(“%[^\n]”,str);  //以换行符作为字符串输入的结束

    printf(“\n%s”,str); 

    展开全文
  • 我们用scanf()函数输入一个带空格的字符串函数时,经常会在第一个空格时就停止输入。 下面有两种方法可以完整输入字符串 1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每...

    我们用scanf()函数输入一个带空格的字符串函数时,经常会在第一个空格时就停止输入。

    下面有两种方法可以完整输入字符串

    1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。 

    Strcat()一般格式:char*strcat(char*dest,const char*src);  

    函数将字符串src连接到dest的尾端,并返回字符串dest的首指针。 

     #include “stdio.h” 

    #include “string.h” 

    #include “conio.h” 

    void main() 

     char *str,*s1,*s2; 

    clrscr();                            / /清屏
    scanf(“%s”,str);               //输入字符串 
    scanf(“%s”,s1);              //此后两个输入语句不需要用户进行输入

     scanf(“%s”,s2);     
    strcat(str,“”);     //连接一个空格 

    strcat(str,s1);     //连接单词 

    strcat(str,””);     //连接一个空格

    strcat(str,s2);     //连接字符串
    printf(“\n%s”,str);    //输出字符串str 

    }   

    2)利用格式符“%[]”它的作用为扫描字符集合。 

    Scanf(“%[^c]”,str); 
    其中“c”是一个具体的字符常量(包括控制字符)。

    当输入字符串时,字符“c”将被当作当前输入的结束符。

    如同默认情况下空格和回车键以及TAB键是作为字符串输入的结束符一样,利用此格式符便相当于由编程者自己指定一个输入结束符。 

    #include”stdio.h” 

    #include “conio.h” 

    void main() 


    char *str;

      clrscr(); 
    scanf(“%[^\n]”,str);  //以换行符作为字符串输入的结束

    printf(“\n%s”,str); 

    展开全文
  • 首先明确 scanf结束标志是空格喝回车键,而gets的结束标志为回车键,输入字符串时,一般采用gets 因此有下面两种方法可以在使用scanf时完整输入字符串 1)利用strcat()函数来实现带空格字符串的输入,可以用...
  • scanf函数默认是遇空格便停止继续读字符了,要想让scanf函数继续读可以这样操作: scanf("%[^\n]", name); gets(name); http://pythonschool.com/python/4.html  转摘 转载于:...
  • scanf输入空格

    2021-04-06 06:11:00
    scanf输入数据时遇到空格和遇到回车都会结束输入 如果我们想要输入一串字符如:Hello World! scanf("%s",&str); 打印出的结果只会是Hello,因为在Hello之后遇到了空格结束了输入. 那么如何解决这个问题呢? scanf(...
  • 先简单了解一下scanf函数: 函数原型:int scanf(const char *format, ...); 参数:要注意的是变量前面的取地址符&不要忘记 返回值 :返回的是正确按指定格式输入变量的个数,也就是能正确接收到值的变量个数 #...
  • 1、使用gets()遇到空格不会终止从缓冲区中读取数据 2、scanf(“%[^\n]”,str); ^\n 表示非\n 当遇到非\n的字符时就读入
  • scanf输入字符串遇到空格

    万次阅读 多人点赞 2019-06-02 12:34:49
    使用scanf时对空格处理?问题描述解决办法总结 问题描述 scanf输入字符串(含有空格的字符串,例如:“I ...这是因为scanf扫描到 “I” 后面的空格,就认为对str的扫描结束(即空格没有被扫描),并舍弃后面的" l...
  • scanf输入空格会停止的问题

    千次阅读 2020-02-21 14:45:06
    scanf只有在遇到\n,也就是是回车时才结束输入,但是遇到空格和tab时就会停止读取 解决方法 方法一: 使用字符串函数gets()来进行输入 gets(str); 方法二: 使用scanf scanf( "%[^\n]", str ); ...
  • scanf空格的读取

    2021-02-20 00:25:41
    只有%c能读取到空格字符,其他占位符豆浆空格作为结束判断标志。 %d以空格作为结束标志,%c读到空格字符,%s以第二个空格字符作为结束标志。
  • 目录目的解决scanf()跳过空白、fgets()...所以创建了一个s_gets()函数,可以读取空格分隔的一行字符 char * s_gets(char * st, int n) { char * ret_val; char * find; ret_val = fgets(st, n, stdin); if (ret_
  • //但是你输入的是整数的时候,它不会吧空格识别为结束符  /* 给某个单词定位,并输出他的位置--------------*/ #include #include #include int main() {  int N,i=0,n=0; // char...
  • scanf空格后继续输入

    万次阅读 2016-09-18 21:59:27
    如何让scanf()函数正确接受有空格的字符串?如: I love you!    #include  int main()  {  char str[80];  scanf("%s",str);  printf("%s",str);  return 0;  }  输入:...
  • 由此,我们可以断定,scanf遇到空格就停止读入了。 那么我们应该如何解决这个问题呢? 我们有两种解决方法。 第一种:用gets函数 char str[100]; gets(str); 得到的结果如下: I love you 因为gets可以读入空格,...
  • scanf 无法读入空格

    千次阅读 2012-03-15 17:49:36
    scanf不是不显示空格, ...在串中遇到空格时,结束字符串的输入。 所以如果用户输入" abcd efg"的话, scanf取得的字符串为"abcd"。 而gets取得字符串时,是在遇到EOF(串尾)时停止,所以不存在这个问题。
  • 先看下面这段程序  #include int main() { int a; char b[100]; printf("Please input the number:\n",a);...scanf("%d",&a);  printf("a = %d",a); printf("Please input the string:\n",b);
  • scanf读取含空格的字符串

    万次阅读 多人点赞 2018-07-14 23:44:13
    scanf()函数接收输入数据时,遇以下情况结束一个数据的输入: ① 遇空格、“回车”、“跳格”键。 ② 遇宽度结束。 ③ 遇非法输入。 scanf接收包含空格的字符串 #include &amp;amp;lt;stdio.h&...
  • 做题遇到直到n为0停止,中间又要输入gets,为了防止gets吃回车,便scanf中加了空格,即scanf("%d ",&n),结果就出现了输入0之后还需要再输入一个字符程序才会结束 #include <stdio.h> #include <stdlib....
  • 输入字符串遇到换行或空格结束输出 char a[100],c; int i; i = 0; while(scanf("%c",&c) && c != ' ') { a[i] = c; i++; }
  • scanf函数与空格

    千次阅读 2013-01-15 11:15:12
    问题描述一:(scanf()读入字符串中的空格) | ---------------------------------------------------- #include int main() {  char a[777];  scanf("%[^/n]",&a);  printf("%s",a);  return 0; } ...
  • C语言中scanf函数与空格回车

    万次阅读 多人点赞 2013-11-08 23:21:21
    众所周知,C语言中的scanf函数的作用是从标准输入设备...scanf通常返回的是成功赋值(从标准输入设备赋值到参数列表所指定的内存区域)的数据项数,如果出错或是遇到end of file(注意,如果想从键盘输入EOF,在windows
  • C语言scanf函数与空格

    2012-10-05 23:22:21
    C语言scanf函数与空格 | 问题描述一:(scanf()读入字符串中的空格) | ---------------------------------------------------- #include int main() {  char a[777];  scanf("%[^/n]",&a);  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,708
精华内容 5,083
关键字:

scanf遇到空格结束吗