搜索
查看: 3440|回复: 15
打印 上一主题 下一主题

解析一下为何输入how are you 系统只会显示how

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-26 16:15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
int main()
{
        char str[10];
    scanf("%s",&str);
    printf("%s\n",str);
        sleep(5000);
        return 0;
}

沙发
发表于 2013-1-26 16:41:04 | 只看该作者
空格是空字符scanf函数好像读取到空字符结束
板凳
发表于 2013-1-27 12:04:44 | 只看该作者
#include <stdio.h>
int main()
{
       
    char str[30];
    scanf("%[^\n]",&str);
   
    printf("%s\n",str);
        sleep(5000);
        return 0;
}

评分

参与人数 1啊哈币 +5 收起 理由
李掌柜 + 5 赞一个!

查看全部评分

地板
发表于 2013-1-27 18:47:06 | 只看该作者
空格是空字符scanf函数读取到空字符结束
5#
发表于 2013-2-9 13:01:11 | 只看该作者
#include <stdio.h>
int main()
{
        char str[10];
    scanf("%s",str);
    printf("%s\n",str);
        sleep(5000);
        return 0;
}


6#
发表于 2013-2-9 13:02:28 | 只看该作者
而且标识符str最好大写  容易辨认

点评

SX,C是区分大小写的。晕……  发表于 2013-4-6 09:16
7#
发表于 2013-2-9 23:16:28 | 只看该作者
唯一xd 发表于 2013-2-9 13:02
而且标识符str最好大写  容易辨认

大写一般是用来表示常量的
8#
发表于 2013-4-22 00:33:47 | 只看该作者
kekegcs 发表于 2013-1-27 12:04
#include
int main()
{

求教%[^\n]是什么意思啊??
9#
发表于 2013-4-23 11:32:39 | 只看该作者
saidline 发表于 2013-4-22 00:33
求教%[^\n]是什么意思啊??

使用%s的scanf()函数只会读取一个单词,遇到空格,制表符,换行符处停止读取。
^是取反的意思,\n为换行符。%[^\n]就是读取除换行符以外的所有字符串。
这样
how are you 中的空格及空格后面的字符串就能全部读取。

一般在这种情况下,用gets()函数读取字符串比较好。
如:gets(str);
10#
发表于 2013-4-23 17:53:53 | 只看该作者
kekegcs 发表于 2013-4-23 11:32
使用%s的scanf()函数只会读取一个单词,遇到空格,制表符,换行符处停止读取。
^是取反的意思,\n为换行 ...

噢,这样的,长见识了,
那可否取反^的对象可否是其他如\t或者'a'?此时还是按回车时停止读取吗?而且此时读取到的是什么(即是不是到第一个\t或者'a'就停止读取了,还是读取的字符串把\t全部去除按原序重组)?
我看到百度里有些写scanf("%*c%*[^\n]",&a);为什么同时出现两个,此时怎么储存的?还有当只写scanf("%*[^\n]",&a);时怎么知道读取的是什么类型?
问题很多啊,谢谢!
11#
发表于 2013-4-26 10:51:05 | 只看该作者
saidline 发表于 2013-4-23 17:53
噢,这样的,长见识了,
那可否取反^的对象可否是其他如\t或者'a'?此时还是按回车时停止读取吗?而且此 ...

一提问就一发而不可收拾了啊,这要决堤啊有木有
12#
发表于 2013-4-27 00:08:53 | 只看该作者
学习学习,哈哈哈
13#
发表于 2013-4-27 01:49:51 | 只看该作者
kekegcs 发表于 2013-4-23 11:32
使用%s的scanf()函数只会读取一个单词,遇到空格,制表符,换行符处停止读取。
^是取反的意思,\n为换行 ...

gets()有严重的安全隐患,应该用fgets()
14#
发表于 2013-10-7 16:41:50 | 只看该作者
空格是空字符scanf函数读取到空字符结束,要用gets();
15#
发表于 2013-12-15 22:23:07 | 只看该作者
a469331862 发表于 2013-1-26 16:41
空格是空字符scanf函数好像读取到空字符结束

还有回车
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表