A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 余丽丽 于 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"停止








19 个回复

倒序浏览
hi虚无缥缈 来自手机 中级黑马 2015-6-3 12:43:59
沙发
中括号[^\n]怎么解释
回复 使用道具 举报
hi虚无缥缈 发表于 2015-6-3 12:43
中括号[^\n]怎么解释

控制字符 说明
%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:59
“^表示"非",即读入其后面的字符就结束读入”怎么解释?

意思就是不读取^后面的字符,并且遇到此字符就停止读取,
比如scanf ("%[^a]",string);
输入: zxcv sdavc
输出: zxcv sd
回复 使用道具 举报 1 0
不太明白

点评

哪里不明白?可以说出来  发表于 2015-6-5 17:13
回复 使用道具 举报
围观学习啦!
回复 使用道具 举报
:loveliness:好样的  
回复 使用道具 举报
长见识了
回复 使用道具 举报
围观下。
回复 使用道具 举报
很好很好, 又学习了
回复 使用道具 举报

你这二货 大侄子 怎么了
回复 使用道具 举报
有意思  不错  学习了
回复 使用道具 举报
涨知识了,谢谢楼主
回复 使用道具 举报
谢谢楼主分享
回复 使用道具 举报
taolove 来自手机 中级黑马 2015-6-6 01:28:17
17#
定义连个字符串接受数组,str1[],str2[]就可以了!
回复 使用道具 举报
Scan'f的用法还是很不错的,回头我再整理整理
回复 使用道具 举报
懒人gets()
我面壁一会
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马