社区
C语言
帖子详情
谁给我解释一下scanf语句
caijize
2005-11-30 12:42:33
char p[500]={'\0'};
fscanf(fp,"%[^\n]",p);
========================
我猜是将“\n”之前的所有字符存到P里面去,但这里的方括号是什么意思?换成圆括号可不可以?我看了很多书都没有介绍这种用法,谁能给我解释一下?
...全文
124
12
打赏
收藏
谁给我解释一下scanf语句
char p[500]={'\0'}; fscanf(fp,"%[^\n]",p); ======================== 我猜是将“\n”之前的所有字符存到P里面去,但这里的方括号是什么意思?换成圆括号可不可以?我看了很多书都没有介绍这种用法,谁能给我解释一下?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaocai0001
2005-11-30
打赏
举报
回复
scanf()支持一种通用的格式说明符, 叫扫描集, 扫描集定义了用scanf()读入字符的集合.scanf()在处理扫描集时, 它将读入一串属于扫描集定义的字符的任意长度的字符串, 并将它们赋给与此扫描集中变元对应的字符数组.
定义扫描集时, 将需要扫描到字符序列置入方括号. 且开头的方括号必须以%做为前缀.
例如下面的扫描集告诉scanf()只读入字符X,Y,Z:
%[XYZ]
zhousqy
2005-11-30
打赏
举报
回复
接受除\n之外的所有字符
xiaocai0001
2005-11-30
打赏
举报
回复
输入时, 指定的字符集方式
RainWindy
2005-11-30
打赏
举报
回复
不好意思,没看到xiaocai0001(萧筱雨) 兄已经写的这么清楚了。
RainWindy
2005-11-30
打赏
举报
回复
应该是C定义的一个正则表达式,不过我没找到相应的资料。
单从这个串来看,楼主是对的。指按顺序读取字符,直到遇到'\n'字符。方括号不能换成圆括号。方括号是有意义的,指选择一个集合,具体可以从正则表达式的定义来测试。
xiaocai0001
2005-11-30
打赏
举报
回复
结帖就可以了, 散分就不用了.
caijize
2005-11-30
打赏
举报
回复
明白,谢了,结贴。
我再开个贴,请 xiaocai0001(萧筱雨)过来接分。
xiaocai0001
2005-11-30
打赏
举报
回复
也可以用破折号定义接受字符的范围
如
%[A-Z]
表示从A到Z的字符. 扫描集是区分大小写的.
可以在扫描集中第一个字符前加前缀^, 定义求反集, 表示不接受扫描集中的任何字符.
caijize
2005-11-30
打赏
举报
回复
回答我上面那个问题的,我再加二十分~~
caijize
2005-11-30
打赏
举报
回复
谢谢xiaocai0001(萧筱雨)
但我还是有点不明白,[^\n]是不是指除了'\n'以外的所有字符?
那[^X]就是除X以外的所有字符吗?
如果我要的是26个字母的大小写和数字和空格那么应该怎么写呢?
用一个方括号把这些全包进来吗?
bombwang
2005-11-30
打赏
举报
回复
学习了
DiabloWalkOnTheEarth
2005-11-30
打赏
举报
回复
好像是M$的方言.
C++
scanf
语句
的各种用法
scanf
语句
scanf
本身是C语言的输入
语句
(但c++是兼容C语言的 头文件是iostream(用万能头的就不用管了 //1.输入十进制的数 int a;
scanf
("%d",&a);
scanf
("%i",&a);
scanf
("%u",&a); //这三种写法都是可以的 在
scanf
的引号里面的就是你在输入时候的格式(我们称%...为占位符 逗号之后是你要输入的内容(相当于你要把输入进来的东西存在&后面的这个变量里 //2.输入八进制和十六进制数
switch
语句
中的
scanf
语句
今天在写老师布置的题时,发现我switch
语句
下的
scanf
无法运行 后来试了getch()才能运行。
C语言中
Scanf
语句
的注意事项
C语言中
Scanf
语句
的注意事项,附图文。
scanf
语句
的使用和执行原理
这说明
scanf
语句
读取完数字后,会把后面的空格也读取掉。如果后面有变量来接收,读取后就会把空格赋值给对应的变量,如果没有变量来接收,那么仅仅是读取,不会进行赋值操作。值得注意的是,
scanf
只有在读取完数字后会继续把后面的空格读取掉
C++入门之
scanf
语句
C++入门之
scanf
语句
首先我们来看一个程序: #include<bits/stdc++.h> using namespace std; int main() { int n,m;
scanf
("%d",&n);
scanf
("%d",&m); cout<<n+m; } 这个代码中包含了
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章