啊哈磊_编程从这里起步

标题: 解析一下为何输入how are you 系统只会显示how [打印本页]

作者: qiaobusi    时间: 2013-1-26 16:15
标题: 解析一下为何输入how are you 系统只会显示how
#include <stdio.h>
int main()
{
        char str[10];
    scanf("%s",&str);
    printf("%s\n",str);
        sleep(5000);
        return 0;
}


作者: a469331862    时间: 2013-1-26 16:41
空格是空字符scanf函数好像读取到空字符结束
作者: kekegcs    时间: 2013-1-27 12:04
#include <stdio.h>
int main()
{
       
    char str[30];
    scanf("%[^\n]",&str);
   
    printf("%s\n",str);
        sleep(5000);
        return 0;
}

作者: Apple    时间: 2013-1-27 18:47
空格是空字符scanf函数读取到空字符结束
作者: 唯一xd    时间: 2013-2-9 13:01
#include <stdio.h>
int main()
{
        char str[10];
    scanf("%s",str);
    printf("%s\n",str);
        sleep(5000);
        return 0;
}



作者: 唯一xd    时间: 2013-2-9 13:02
而且标识符str最好大写  容易辨认
作者: rosynirvana    时间: 2013-2-9 23:16
唯一xd 发表于 2013-2-9 13:02
而且标识符str最好大写  容易辨认

大写一般是用来表示常量的
作者: saidline    时间: 2013-4-22 00:33
kekegcs 发表于 2013-1-27 12:04
#include
int main()
{

求教%[^\n]是什么意思啊??
作者: kekegcs    时间: 2013-4-23 11:32
saidline 发表于 2013-4-22 00:33
求教%[^\n]是什么意思啊??

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

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

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

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

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

还有回车

作者: uir1393513835    时间: 2013-12-15 22:25
rosynirvana 发表于 2013-2-9 23:16
大写一般是用来表示常量的

是用#define定义的吧?




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2