C语言,关于sscanf 函数的读入规则

有字符串s"(11,LL)",有语句sscanf(s,"%d",&num);其中s为字符数组名,num为int类型,请问此时num的值应该变成多少?
注意,不是scanf,是sscanf ,字符串读入函数

输入字符串中有括号,而输入格式串是%d,无法与括号匹配,此时读入num时出错,但程序可以正常运行,而num变量的值不变。如果之前num没有被赋过值,此时num拥有一个随机值,这个值与不同编译器有关,比如在我的C语言环境下是-858993460。
如果输入语句是sscanf(s,"(%d,LL)",&num),这时num得到的值是11没有问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-14
s"(11,LL)"//这是啥、
sscanf(s,"%d",&num);//既然这里是调用被调函数sscanf那么你也应该给出被调函数的内容才能知道num最后的值吧
第一个实参s、s为数组名(数组第一个元素地址)这个实参没什么问题、第二个实参是啥意思"%d"??这不是输出输入控制符吗、怎么会跑到实参里面来、?既然没有给出被调函数则无法确认最后num的值追问

我写的不够规范,并且多打了一个空格
但sscanf函数是在里面包含了的,应该知道是什么吧?
应该是这样
char s[100];
int num;

s="(11,LL)";
sscanf(&s[1],"%d",&num);\\注意是&s[1]不是s[1],也不是&s[0];

本回答被网友采纳
第2个回答  2012-08-13
scanf函数的第一个参数是字符指针吧,scanf(s,"%d",&num)这样可以吗?
num的值变为(11,LL)转换后的十进制数
第3个回答  2012-08-13
什么乱七八糟的,有scanf(s,"%d",&num);这种写法?追问

您不知道有sscanf函数吗。。。注意,两个s

相似回答