使用sscanf读取日期

3

我需要使用以下代码行,并使用sscanf从一个char *字符串中读取日期格式(dd-mm-yyyy):

sscanf(string, "%[^-]-%[^-]-%[^;];", day, month, year)

其中day/month/year是每个元素具有3/3/5个字符的char*字符串。

这种方式可以工作,但是当我尝试将day/month/year作为integer变量(使用相同的sscanf)时,我在对它们使用printf时得到了一个0 0 0的值。如果我更改sscanf

sscanf(string, "%d-%d-%d;", day, month, year)

我遇到了 segmentation fault 错误。

有没有人可以帮帮我?我在使用K&R书籍时,没有找到解决方案。


“day”,“month”和“year”是如何声明的? - cnicutar
1个回答

8

你需要传递 int 变量的地址:

int day, month, year;
sscanf(string, "%d-%d-%d;", &day, &month, &year);
< p > sscanf() 返回完成的赋值数量,请在使用daymonthyear之前建议检查返回值:

if (3 == sscanf(string, "%d-%d-%d;", &day, &month, &year))
{
}

这是正确的,但我发誓我之前尝试过用“&day”……但没成功。 - Arrigo Pierotti
@ArrigoPierotti,你把day的类型从char[3]改成了int吗? - hmjd
日/月/年 转换为整数,但没有起作用。现在它可以工作了,不知道 xD。 - Arrigo Pierotti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接