关闭

while循环输入字符串中以Esc键作为循环结束标识——scanf读取带空格字符串

1266人阅读 评论(0) 收藏 举报
分类:

需求

在一个字符串输入循环中,判断输入的是字符串还是Esc按键,如果是Esc按键则结束循环。

代码:

#include<stdio.h>
int main()
{
    char buf[16];
    while(1){
        scanf("%[^\n]%*c",buf);
        if(27 == buf[0]){
            break;
        }
        printf("%s\n",buf);
    }
    return 0;
}

此时可通过Esc+Enter退出循环。
Esc的Ascii码为27.
scanf(“%[^\n]”,buf)表示读入一行字符串到buf里,字符串输入结束标识为回车键。^表示“非”,\n表示回车换行键。这是一个有趣的输入方法,输入内容由[]里决定,如scanf(“%[abcd]”,buf)表示只能输入abcd这四种字符,如果遇到其它字符scanf函数就会返回。
scanf(“%*c”)里,*表示该输入项读入后不赋予任何变量,c表示一个字符,因此该语句表示读入一个字符,但不赋给任何变量(在scanf(“%[^\n]%*c”,buf)里用于读取输入遗留下来的\n)。
scanf(“%[^\n]%*c”,buf);就是将两者结合起来。
gets()函数也能实现获取一个带空格字符串的操作,但在Linux系统下使用该函数会得到一个警告:warning: the `gets’ function is dangerous and should not be used,原因在于Linux下gcc编译器不支持gets()函数,可以改用fgets()函数,但该函数又会导致其它问题:gets从终端读入的字符串用\0结束的,而fgets是以\n结束的(一般输入都用ENTER结束),所以strcmp两者的时候是不会相等的!

参考:http://blog.csdn.net/zx824/article/details/6859930

0
0
查看评论

C语言中用scanf连续输入两个字符类型的问题

<br />昨天用C编程,遇到一个关于scanf的细节问题,假如运行如下程序:#include<stdio.h><br /> int main()<br /> {<br />  char ch1,ch2;<br /&g...
  • hjs1122
  • hjs1122
  • 2011-02-16 10:58
  • 11926

编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。

编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。package yang.base; import java.util.ArrayList; import java.util.Arrays; import java.util.Co...
  • yz972641975
  • yz972641975
  • 2015-08-16 16:36
  • 4631

字符串的while()循环遍历

下面是两种遍历字符串时的while()循环 char *str1 = "abcdefg"; char *str2 = "abcdefg"; //第一种遍历 while (*(str++)) { ; } //第二种遍历 while (*str2) {...
  • yykebeibei
  • yykebeibei
  • 2016-04-16 16:48
  • 1107

while循环输入字符串中以Esc键作为循环结束标识——scanf读取带空格字符串

需求在一个字符串输入循环中,判断输入的是字符串还是Esc按键,如果是Esc按键则结束循环。
  • u011012049
  • u011012049
  • 2016-08-30 22:50
  • 1266

关于scanf连续输入字符或字符串等

#include "stdio.h" main() { int i; char m; printf("输入 i:"); scanf("%d",&i); printf("输入 m:"); scanf(...
  • fuyunliushuizjf
  • fuyunliushuizjf
  • 2015-03-23 16:34
  • 369

scanf获取一个句子 解决遇到空格结束

首先明确 scanf的结束标志是空格喝回车键,而gets的结束标志为回车键,输入字符串时,一般采用gets 因此有下面两种方法可以在使用scanf时完整输入字符串 1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。  ...
  • louyijie
  • louyijie
  • 2016-11-27 14:43
  • 1111

两种方法让scanf遇到空格继续输入字符串

我们用scanf()函数输入一个带空格的字符串函数时,经常会在第一个空格时就停止输入。 下面有两种方法可以完整输入字符串 1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。  Strcat()一般格式:char*st...
  • Sfeng177
  • Sfeng177
  • 2016-11-07 22:55
  • 2310

scanf读取单个字符问题

在编写简单程序寻找元音字母小程序是遇到的问题: 原本计划在程序中用到scanf("%c",ch)读取单个字符,但是在一次执行过程中出现运行两次的情况:#include <stdio.h> #include <stdlib.h> int main(void...
  • qiye005
  • qiye005
  • 2015-06-26 15:48
  • 2347

scanf和循环

Scanf函数基本概念 scanf函数是一个阻塞式函数 程序会停在scanf函数出现的地方, 格式:scanf("格式控制字符串",输入项地址列表); 输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。 |格式|意义| |--|--| |d|输...
  • lingdun
  • lingdun
  • 2015-08-19 11:04
  • 615

scanf()函数实现输入带有空格的字符串

我们用scanf()函数输入一个带空格的字符串时,经常会在第一个空格时就停止输入。 下面有两种方法可以完整输入字符串 1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。  Strcat()一般格式:char*strcat(char*d...
  • qq_35535992
  • qq_35535992
  • 2016-07-14 20:08
  • 1964
    个人资料
    • 访问:77919次
    • 积分:2129
    • 等级:
    • 排名:千里之外
    • 原创:122篇
    • 转载:53篇
    • 译文:0篇
    • 评论:4条
    最新评论