sscanf怎么用与问题,怎么解决

这个问题可以用sscanf()来解决吗
[问题点数:0分]
这个问题可以用sscanf()来解决吗
[问题点数:0分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|sscanf函数---一个简单的问题_百度知道
sscanf函数---一个简单的问题
#include &stdio.h&
int main(){
char s[20000];
int a[20000],i;
fgets(s,20000,stdin); //如输入:22 33 44 55 66 77
//此处怎么利用sscanf函数将s中的数字转到a中?
for(i=0;i&这里的大小是多少?;i++)
printf(&%...
在线等.....
我有更好的答案
这个问题不简单,只用一句sscanf是没有办法实现你的要求,而且用ssanf也不是好的方法, strtok虽然也不好,但这这里比sscanf的方案好。 如果非用sscanf,则需要间接转换,如下:int&n;int&*pa&=&a;char&ch[5];&/*&最大5位数,可修改*/char&*ps&=&s;while(&sscanf(ps,&&%[^&]&%n&,&ch,&&n)&==&1&){&&&&printf(&%s\n&,&ch);&&&&sscanf(ch,&&%d&,&pa++);&&&&ps&+=&n;}这样通过1个循环和2个sscanf,就可以实现字符串的分割及转换。 &---- 再次强调,这不是好方法。
有啥简单的方法不?求教。
简单和安全总是相对的。 如果希望代码最少, 可以把上面两个sscanf直接合并成一个,就如楼下给出的代码那样。 直接分割+转换,容易出问题,比如用户输入时候,多了一个其他符号,就需要错误处理了;所以先按字符分割,然后再转换比较好。 比如;char&*p;int&*pa&=&a;for&(&p&=&strtok(s,&&&&);&p&!=&NULL;&p&=&strtok(NULL,&&&&)){&&&&sscanf(p,&&%d&,&pa++);}这样的好处是如果有其他分隔符,可以容易添加到strtok里面,而且也用到了sscanf,算是投机了一下。
采纳率:87%
用 if (s[i]==' ' && ((s[i+1] &= '0') && (s[i+1] &= '9')))
找各数字开始位置 做 转换。 #include &stdio.h&#include &stdlib.h&int main(){
char s[2000];
int a[2000],i,n;
fgets(s,2000,stdin); // if input 22 33 44 55 66 77
sscanf(s,&%d&,&a[0]);n=1;for (i=1;i&strlen(s)-1;i++){if (s[i]==' ' && ((s[i+1] &= '0') && (s[i+1] &= '9'))) {sscanf(&s[i+1],&%d&,&a[n]); n++;}
}for(i=0;i&n;i++)
printf(&%d &,a[i]);
return 0;}
本回答被网友采纳
#include&&stdio.h&int&main(){&&&&&char&s[20000];&&&&&&int&a[20000],i;&&&&&&char*&ps&=&s;&int&&&fgets(s,20000,stdin);//&22&33&44&55&66&77&&i=0;&while(&sscanf(ps,&&%d&%n&,&&a[i++],&&len)&==&1&)&{&&ps&+=&&}&//注意&i为a中元素个数加1&&i=1&时候0个元素&return&0;}
为您推荐:
其他类似问题
sscanf的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c语言中sprintf和sscanf用法全_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
c语言中sprintf和sscanf用法全
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩7页未读,
定制HR最喜欢的简历
你可能喜欢下次自动登录
现在的位置:
& 综合 & 正文
sscanf的一个问题
前天写程序时需要从文本转换到double类型,使用了sscanf函数。
运行时遇到奇怪的现象:输出的结果并不是我想要的,而是一个非常小的数字。
百度之后得到的sscanf使用介绍中转换到浮点类型都是我所使用的方法,可是为什么会出现这样的问题呢,
起初是怀疑自己的VC6.0的问题。回寝室后在同学机子上尝试同样的语句也都是错误的结果。
在和同学商量时突然想到是不是要在格式符"%f"的中间添加"l"修饰符呢。
尝试一下之后,正确的结果赫然出现在了命令行黑色的面板上了。
心结释然的同时也产生了一个疑惑,在printf里面可以"%f"输出双精度浮点型,
为什么sscanf中却必须加修饰符才能正确输出双精度浮点类型呢?
疑惑中,等项目结束时再好好研究一下!
【上篇】【下篇】摆脱警告sscanf问题,怎么解决_百度知道
摆脱警告sscanf问题,怎么解决
我有更好的答案
编译器Keil uV4 ARM按【编译目标文件】按钮,单独编译本c文件结果如下:1、当文件修改后第一次编译出现警告,2、第一次编译完成后如果再按一次【编译目标文件】则警告消失3、如果文件修改后再次按【编译目标文件】或【全部编译】则警告又出来了。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 sscanf 正则表达式 的文章

 

随机推荐