C中sscanf把表达式字符串转化数字的问题

a530877647 2012-12-06 12:48:41
double val1,val2;
sscanf("1234.5*52222","%lf",&val1);


这里*号也可改为+-/号,我要怎么才能把52222读出来啊
...全文
417 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
didijiji 2012-12-06
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <time.h>
#include<stdlib.h>

int main(int argc, char * argv[])
{
	int a = 0, b = 0, c = 0;
	scanf("%*d%d%d", &a, &b, &c);
	printf("a = %d\n", a);
	printf("b = %d\n", b);
	printf("c = %d\n", c);
	system("pause");
    return 0;
}
结果如下: 12 52 63 a = 52 b = 63 c = 0 请按任意键继续. . .
breakfisher 2012-12-06
  • 打赏
  • 举报
回复
引用 1 楼 rocktyt2 的回复:
sscanf("1234.5*52222","%*lf*%lf",&val1); %*xxx代表跳过一个值
一楼正解, *亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)
rocktyt 2012-12-06
  • 打赏
  • 举报
回复
sscanf("1234.5*52222","%*lf*%lf",&val1); %*xxx代表跳过一个值
赵4老师 2012-12-06
  • 打赏
  • 举报
回复
double val1,val2;
int op;
if (3==sscanf("1234.5*52222","%lf%c%lf",&val1,&op,&val2)) {
 printf("%lg%c%lg\n",val1,op,val2);
} else {
 printf("Format error!\n");
}
a530877647 2012-12-06
  • 打赏
  • 举报
回复
引用 5 楼 rocktyt2 的回复:
引用 4 楼 a530877647 的回复:引用 1 楼 rocktyt2 的回复:sscanf("1234.5*52222","%*lf*%lf",&amp;amp;val1); %*xxx代表跳过一个值 我知道%*xxx代表跳过一个值,但是后面的*号怎么跳过。*号还可能是+-/号,你事先不知道是什么符号,改一下就跳不了了。 sscanf("1234.……
行了,3Q
rocktyt 2012-12-06
  • 打赏
  • 举报
回复
引用 4 楼 a530877647 的回复:
引用 1 楼 rocktyt2 的回复:sscanf("1234.5*52222","%*lf*%lf",&amp;val1); %*xxx代表跳过一个值 我知道%*xxx代表跳过一个值,但是后面的*号怎么跳过。*号还可能是+-/号,你事先不知道是什么符号,改一下就跳不了了。
sscanf("1234.5*52222","%*f%*c%f",&val1); 不知道是什么符号,但至少是一个字符吧,那就跳过一个字符不就行了
a530877647 2012-12-06
  • 打赏
  • 举报
回复
引用 1 楼 rocktyt2 的回复:
sscanf("1234.5*52222","%*lf*%lf",&val1); %*xxx代表跳过一个值
我知道%*xxx代表跳过一个值,但是后面的*号怎么跳过。*号还可能是+-/号,你事先不知道是什么符号,改一下就跳不了了。

69,396

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧