scanf输入%s,%c遇到空白字符的一些思考 | 您所在的位置:网站首页 › c语言里面的空格代表什么 › scanf输入%s,%c遇到空白字符的一些思考 |
scanf输入%s,%c遇到空白字符的一些思考
问题引入字符%c与%s空白符空字符‘/0’与空格的区分scanf()输入与字符串的一些定义形式
问题引入
原题链接link 输入格式: 第一行包含整数 N,表示操作数。 接下来 N 行,每行包含一个操作指令,指令为 I x 或 Q x 中的一种。 输入方法: 输入格式: 2 I abc Q abc #include using namespace std; void insert(char str[]) { //插入操作 } void query(char str[]) { //查询操作 } const int N = 100010; int main() { char str[N] int n; scanf("%d", &n); while (n--) { char op[2];//这里op[0]装命令op[1]用来装'\0' scanf("%s",op); scanf("%s",str); if(op[0] == 'I') insert(str); else if (op[0] == 'Q') cout char op; getchar(); scanf("%c",&op);//需要取单个字符的地址 getchar(); scanf("%s",str); if(op == 'I') insert(str); else if (op == 'Q') cout char letter; int age; char url[30]; scanf("%c", &letter); scanf("%d", &age); scanf("%s", url); //可以加&也可以不加& printf("26个英文字母的最后一个是 %c。\n", letter); printf("C语言中文网已经成立%d年了,网址是 %s。\n", age, url); return 0; }运行示例: z↙ 6↙ http://c.biancheng.net↙ 26个英文字母的最后一个是 z。 C语言中文网已经成立6年了,网址是 http://c.biancheng.net。 scanf() 和 printf() 虽然功能相反,但是格式控制符是一样的,单个字符、整数、小数、字符串对应的格式控制符分别是 %c、%d、%f、%s。 对读取字符串的说明 对于第一种形式的字符串,在[ ]里面要指明字符串的最大长度,如果不指明,也可以根据=后面的字符串来自动推算,此处,就是根据"http://c.biancheng.net"的长度来推算的。但是在前一个例子中,开始我们只是定义了一个字符串,并没有立即给它赋值,所以没法自动推算,只能手动指明最大长度,这也就是为什么一定要写作char url[30],而不能写作char url[]的原因。 scanf() 读取数据时需要的是数据的地址,整数、小数、单个字符都要加&取地址符,这很容易理解;但是对于此处的 url 字符串,我们并没有加 &,这是因为,字符串的名字会自动转换为字符串的地址,所以不用再多此一举加 & 了。当然,你也可以加上,这样虽然不会导致错误,但是编译器会产生警告。 最后需要注意的一点是,scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串,请看下面的例子: #include int main() { char author[30], lang[30], url[30]; scanf("%s %s", author, lang); printf("author:%s \nlang: %s\n", author, lang); scanf("%s", url); printf("url: %s\n", url); return 0; }运行示例: YanChangSheng C-Language↙ author:YanChangSheng lang: C-Language http://c.biancheng.net http://biancheng.net↙ url: http://c.biancheng.net 对于第一个 scanf(),它将空格前边的字符串赋值给 author,将空格后边的字符串赋值给 lang;很显然,第一个字符串遇到空格就结束了,第二个字符串到了本行的末尾结束了。 或许第二个 scanf() 更能说明问题,我们输入了两个网址,但是 scanf() 只读取了一个,就是因为这两个网址以空格为分隔,scanf() 遇到空格就认为字符串结束了,不再继续读取了。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |