精华内容
下载资源
问答
  • scanf( )读取空格

    千次阅读 2018-09-27 19:21:30
    #include <stdio.h> int main() { int ch; char name[32] = {0}; while(1) { scanf("%[^\n]"... // 读取除 '\n' 外的所有字符 scanf("%*c"); // 清空 '\n' ...
    #include <stdio.h>
    
    int main()
    {
         int ch;
         char name[32] = {0};
         while(1)
         {
    
             scanf("%[^\n]", name);   // 读取除 '\n' 外的所有字符
             scanf("%*c");            // 清空 '\n' 
             if(strcmp(name, "bye") == 0)
             {
                 break;
             }
             printf("\t\t\t%s\n", name);
    
         }
         return 0;
    }

    回车符是特殊字符,在scanf("%[^\n]", str)之后需要增加scanf("%c", newline),消除回车符。否则,只要接收到一个回车符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。

    参考资料:

    百度百科-扫描集

    展开全文
  • 代码 #include <Windows.h> #include <cstdio> int main() { char readBuf[128]; char a; for (int i = 0; i < 5; i++) { memset(readBuf, 0, 128);... // scanf_s("%[^\n]%*c", readBuf, 127);

    代码

    #include <Windows.h>
    #include <cstdio>
    
    int main() {
      char readBuf[128];
      char a;
      for (int i = 0; i < 5; i++) {
        memset(readBuf, 0, 128);
        printf("Please enter a string:\n");
        // 方法1
        // scanf_s("%[^\n]%*c", readBuf, 127);
        // 方法2
        // scanf_s("%[^\n]", readBuf, 127);
        // scanf_s("%c", &a, 1);
        // 方法3
        scanf_s("%[^\n]", readBuf, 127);
        getchar();
        printf("String is: %s\n", readBuf);
      }
      return 0;
    }
    

    说明

    %[] 用于获取一个字符集合,为正则写法。代码中的 %[^\n] 表示获取一个字符串,在遇到换行符时停止获取,后面的 %*c 表示读取一个字符但是不会赋值给任何变量,此处用于丢弃换行符,以免下次使用 scanf 时直接结束 scanf 函数。

    展开全文
  • scanf函数使用空白(换行符,制表符,空格)把输入分为多个字段,在依次把转换说明和字段匹配时跳过字符,首先你要知道什么是转换说明(%d,%f等),但唯一例外的是%c,根据%c,scanf会读取每一个字符,包括空白。...

    scanf函数使用空白(换行符,制表符,空格)把输入分为多个字段,在依次把转换说明和字段匹配时跳过字符,首先你要知道什么是转换说明(%d,%f等),但唯一例外的是%c,根据%c,scanf会读取每一个字符,包括空白。
    换句话说,除了%c模式,scanf在读取输入时会跳过非空白字符前的所有字符,然后一直读取字符,直到遇到空白字符或与正在读取的字符不匹配的字符,(转换说明符与其所对应的参数数据类型不一样)。具体可参考书籍《C Primer Plus 中文版》(第六版)。P92 P98.
    下面看几个例子:

    例子一:

    #include<stdio.h>
    int main()
    {
        char M,N;
    
        scanf("%c %c",&M,&N);//%c之前加空格与不加空格之间的区别
        printf("%c%c",M,N)return 0;
    }
    
    a						b	//输入a				b,则正确读入a与b,scanf中两个%c之间的空格起到了在scanf读取时帮助其跳过空格的作用,关于在输入时%c前面加空格的作用我的另一篇文章已介绍过,若scanf中的两个%c之间没有空格则输出a加上一个空格
    ab
    Process returned 0 (0x0)   execution time : 5.467 s
    Press any key to continue.
    
    

    而对于其他的转换说明符则没有此作用,即转换说明符%c前面加上空格会对数据的读入造成影响,而其他的转换说明符则不会,因此
    scanf("%d%d",&n,&m)与scanf("%d %d",&n,&m)的行为相同,
    scanf("%c%c"&n,&m)与scanf("%c %c",&n,&m)的行为不同,如果%c前面加一个空格,scanf在读取输入的数据时便会跳过输入的空格,从第一个非空白字符开始读取,也就是说,scanf("%c",&ch)从输入的第一个字符开始读取,而scanf(" %c",&ch)则从第一个非空白字符开始读取。
    例二:

    #include<stdio.h>
    int main()
    {
        int a,b;
    
        scanf("%d%d",&a,&b);
        printf("%d%d",a,b);
    
        return 0;
    }
    
    1                       2//scanf在读取输入时会跳过非空白字符前的所有字符
    12
    Process returned 0 (0x0)   execution time : 5.705 s
    Press any key to continue.
    
    

    例三:

    #include<stdio.h>
    int main()
    {
       char name[20],xing[20];
       scanf("%s%s",name,xing);
       printf("%s %s",name,xing);
       return 0;
    }
    
    tom             you//scanf在读取输入时会跳过非空白字符前的所有字符
    tom you
    Process returned 0 (0x0)   execution time : 10.425 s
    Press any key to continue.
    
    

    例子四:

    #include<stdio.h>
    int main()
    {
        char name[20],xing[20];
    
    
        printf("请输入你的名字与姓\n");
        scanf("%s",name);//这里不要与转换说明符%s的读取规则弄混了了,根据%s转换说明,scanf只会读取字符串中的一个单词
        scanf("%s",xing);
        printf("%s,%s\n",name,xing);
       // printf("%s",name);
    
    
        return 0;
    }
    
    请输入你的名字与姓
    ZhenKun         Wang//scanf在读取输入时会跳过非空白字符前的所有字符
    ZhenKun,Wang
    
    Process returned 0 (0x0)   execution time : 30.047 s
    Press any key to continue.
    
    

    实践是检验的真理!敲一遍就会了。
    如有错误欢迎留言指正

    展开全文
  • scanf读取空格的字符串
  • 使用scanf("%[^\n]%*c", str); [^\n]的意思是读取到\n停止,当然也可以\n换成其他符号, %*c的意思是读入一个回车...否则如果不加%*c继续使用scanf的话就直接读取缓冲区里的东西,需要使用fflush(stdin)清空缓冲区。
  • #include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> using namespace std; #define ll long long ... scanf("%[^\n]%*c", str1);... scanf("%[^\n]", st
  • scanf空格读取

    2021-02-20 00:25:41
    只有%c能读取空格字符,其他占位符豆浆空格作为结束判断标志。 %d以空格作为结束标志,%c读到空格字符,%s以第二个空格字符作为结束标志。
  • 1、使用gets()遇到空格不会终止从缓冲区中读取数据 2、scanf(“%[^\n]”,str); ^\n 表示非\n 当遇到非\n的字符时就读入
  • #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main(int argc, char** argv) { int a, b;... scanf("%d %d", &a, &b);
  • scanf函数的读取

    2021-01-31 17:02:39
    而如果scanf需要读取一个数据项,返现缓冲区当前是空的,那么程序就scanf代码处阻塞,等待用户输入,scanf函数接收到相应的数据项之后,在缓冲区中将这一数据项清除,scanf函数返回,程序继续执行。 格式化字符...
  • Scanf()读取失败

    千次阅读 2018-06-30 19:03:18
    【实例2】scanf() 读取失败:#include &lt;stdio.h&gt;int main(){ int a, b=999; char str[30]; printf("b=%d\n", b); scanf("%d", &amp;a); scanf("%d", &amp;b); ...
  • scanf通过%s读取字符串时,当遇到空格之后,就匹配结束,这样无法将一行带...gets会读取空格,且gets函数遇到\n后,不会存储\n,而是将其翻译为空字符’\0’ puts函数的格式如下: char *puts(char *str) 函数pu...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,875
精华内容 6,750
关键字:

scanf会不会读取空格