3

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

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

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

以这种方式它可以工作,但是当我尝试使用日/月/年作为integer变量(相同sscanf)时,我在它们上0 0 0使用时得到了一个值printf。如果我sscanf改为

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

我得到了segmentation fault

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

4

1 回答 1

8

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

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

sscanf()返回所做的分配数,建议在使用之前检查返回值daymonth并且year

if (3 == sscanf(string, "%d-%d-%d;", &day, &month, &year))
{
}
于 2012-08-22T10:43:19.427 回答