c语言中几个读取键盘输入带空格字符串的方法

  1. ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

  2. 1.scanf
  3. 用scanf貌似接受不了句子,因为遇到空格就停止;
  4. 但是有一个解决的好方法,可以用%[^\n];%[]是scanf的格式控制符。
  5. 以下是百度百科的说明:
    %[ABC]
    使用扫描集时,scanf() 连续吃进集合中的字符并放入对应的字符 数组,直到发现不在集合中的字符为止(即扫描集仅读匹配的字符)。返回时, 数组中放置以 null 结尾、由读入字符组成的字符串。
    用字符 ^ 可以说明补集。把 ^ 字符放为扫描集的第一字符时,构成其它字符组成的命令的补集合,指示 scanf() 只接受未说明的其它字符。
    对于许多实现来说,用 连字符可以说明一个范围。 例如,以下扫描集使 scanf() 接受字母 A 到 Z: %[A-Z]

  6. 2.gets
  7. gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取。

         用gets()函数才能输入字符串,且遇到空格不会结束。但是gets函数的缺点是不安全,执行读操作时易发生溢出。 存在潜在的缓冲区溢出问题,          gets()已在C99下废弃,在C11下停用,如需读入整个字符串,应使用fgets()。

  1. 3.fgets
            fgets(x,   sizeof(x),   stdin), 同时可以用作键盘输入:fgets(key,n,stdin)且还必须:key[strlen(key)-1]='\0' 还有种程序经常使用的方法:                key[strlen(key-1)]=0x00; 与gets相比使用这个好处是:读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积              导致的缓存溢出问题

你可能感兴趣的:(c语言中几个读取键盘输入带空格字符串的方法)