c - 方法 sscanf() 不明确行为

标签 c

我试图了解 sscanf() 的工作原理。我从此页面运行了一些示例:http://docs.roxen.com/pike/7.0/tutorial/strings/sscanf.xml而且它们不适用于我的平台。我不明白为什么。 例如:“sscanf(”4711bar”,”%d%s”, a, b);”使程序因错误而退出...

这是有效的示例之一:“sscanf("foo", "f%s", a);"。 有人知道为什么吗?它们可以在您的平台上运行吗?谢谢。

这是我的代码:

 int main(void){

   char *b = (char*)malloc(sizeof(char)*100);       
   int a = 0;

   sscanf("4711bar", "%d%s", a, b);
   printf("%d", a);
   printf("%s", b);
 }

最佳答案

您应该编写:sscanf("4711bar", "%d%s", &a, b); & 使 &a 是指向 a指针,而 sscanf 需要指针。

第二个示例有效,因为 a 是一个数组。并且 char[100] 类型的数组 a 隐式转换为指向数组第一个元素的 char * 类型的指针(a [0])。所以 a&(a[0])

相同
int a;
char b[100];
sscanf("4711bar", "%d%s", &a, b);

-

char a[100];
sscanf("foo", "%s", a);

关于c - 方法 sscanf() 不明确行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882482/

相关文章:

检查将两个数字的相应小数位相加是否在每个位置产生相同的值

c - GTK非标准输入

对创建二进制 sysfs 条目感到困惑

c - 为什么我需要刷新我的 I/O 流以获得正确的结果?

c - C 中的未知段错误

c - 执行后c中出现段错误11

c - 如何在 __attribute__((constructor)) 中为嵌套函数指定优先级?

c - 程序无故结束(C语言)

c - 开头双下划线的含义

c - 为什么 getchar() 的行为不同?