读取与sscanf的日期(reading a date with sscanf)

2019-06-27 06:12发布

我有阅读的日期格式(DD-MM-YYYY)使用sscanf的这一行代码一个char *字符串:

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

其中,日/月/年的焦炭*的每个3/3/5 elemets字符串。

这样,它的工作原理,但是当我尝试使用天/蛾/年为integer变量(有相同sscanf ),我得到了一个0 0 0值当我使用printf他们。 如果我改变sscanf

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

我有segmentation fault

任何人都可以帮我吗? 使用K&R的书,我没有找到一个解决方案。

Answer 1:

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

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

sscanf()返回的任务所做的数量,建议使用之前检查返回值daymonthyear

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


文章来源: reading a date with sscanf
标签: c parsing scanf