黑马程序员技术交流社区

标题: 用scanf函数接受hello world 的方法 [打印本页]

作者: 余丽丽    时间: 2015-6-3 11:00
标题: 用scanf函数接受hello world 的方法
本帖最后由 余丽丽 于 2015-6-3 13:04 编辑
实验:
int main(int argc, const char * argv[]) {
    char string[50];
    scanf("%s",string);
    printf("%s\n",string);
    return 0;
}


输入:hello world!
结果:hello
解决办法:

int main(int argc, const char * argv[]) {
    char string[50];
    scanf("%[^\n]",string);
    printf("%s\n",string);
    return 0;
}

输入:hello world hello world
结果:hello world hello word




ps:控制字符 说明
%c 一个单一的字符
%d 一个十进制整数
%i 一个整数
%e, %f, %g 一个浮点数
%o 一个八进制数
%s 一个字符串
%x 一个十六进制数
%p 一个指针
%n 一个等于读取字符数量的整数
%u 一个无符号整数
%[] 一个字符集
%% 一个精度符号

^表示"非",即读入其后面的字符就结束读入
"%[^\n]" 表示读入任意多的字符,直到遇到"\n"停止









作者: hi虚无缥缈    时间: 2015-6-3 12:43
中括号[^\n]怎么解释
作者: 余丽丽    时间: 2015-6-3 13:00
hi虚无缥缈 发表于 2015-6-3 12:43
中括号[^\n]怎么解释

控制字符 说明
%c 一个单一的字符
%d 一个十进制整数
%i 一个整数
%e, %f, %g 一个浮点数
%o 一个八进制数
%s 一个字符串
%x 一个十六进制数
%p 一个指针
%n 一个等于读取字符数量的整数
%u 一个无符号整数
%[] 一个字符集
%% 一个精度符号

^表示"非",即读入其后面的字符就结束读入
"%[^\n]" 表示读入任意多的字符,直到遇到"\n"停止
作者: 李永方    时间: 2015-6-3 13:58
hi虚无缥缈 发表于 2015-6-3 12:43
中括号[^\n]怎么解释

可以输入任意字符,回车结束输入
作者: 李永方    时间: 2015-6-3 13:59
“^表示"非",即读入其后面的字符就结束读入”怎么解释?

作者: 余丽丽    时间: 2015-6-3 14:03
李永方 发表于 2015-6-3 13:59
“^表示"非",即读入其后面的字符就结束读入”怎么解释?

意思就是不读取^后面的字符,并且遇到此字符就停止读取,
比如scanf ("%[^a]",string);
输入: zxcv sdavc
输出: zxcv sd

作者: 马贺飞    时间: 2015-6-5 16:45
不太明白
作者: 这是829    时间: 2015-6-5 21:17
围观学习啦!
作者: 恩赐_RWQqZ    时间: 2015-6-5 21:20
:loveliness:好样的  
作者: huyingbin    时间: 2015-6-5 21:43
长见识了
作者: 洋柿子    时间: 2015-6-5 21:50
围观下。

作者: 七尺阳光    时间: 2015-6-5 21:54
很好很好, 又学习了
作者: Jeason_1007    时间: 2015-6-5 22:00
恩赐_RWQqZ 发表于 2015-6-5 21:20
好样的

你这二货 大侄子 怎么了
作者: 鬼崇祟    时间: 2015-6-5 22:34
有意思  不错  学习了
作者: yi95392    时间: 2015-6-5 22:39
涨知识了,谢谢楼主
作者: jx836202365    时间: 2015-6-5 23:46
谢谢楼主分享
作者: taolove    时间: 2015-6-6 01:28
定义连个字符串接受数组,str1[],str2[]就可以了!
作者: 余丽丽    时间: 2015-6-6 11:27
Scan'f的用法还是很不错的,回头我再整理整理
作者: talent123    时间: 2015-6-6 11:42
懒人gets()
我面壁一会




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2