用sscanf读日期

时间:2012-08-22 10:42:07

标签: c parsing scanf

我必须使用带有以下代码行的sscanf从char *字符串中读取日期格式(dd-mm-yyyy;):

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

其中日/月/年是每个3/3/5元素的字符串*。

通过这种方式它可以工作,但是当我尝试将{/ 1}}变量(使用相同的integer)时使用日/蛾/年时,我使用{{sscanf时得到0 0 0值1}}在他们身上。如果我将printf更改为

sscanf

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

任何人都可以帮助我吗?使用K& R书,我找不到解决方案。

1 个答案:

答案 0 :(得分:7)

您需要传递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))
{
}