用sscanf读日期
我必须使用带有以下代码行的sscanf从char *字符串中读取日期格式(dd-mm-yyyy;):
sscanf(string, "%[^-]-%[^-]-%[^;];", day, month, year)
其中日/月/年是每个3/3/5元素的字符串*。
这样它可以工作但是当我尝试使用day / moth / year作为integer
变量(使用相同的sscanf
)时,当我在它们上使用printf
时,我得到了0 0 0
值。 如果我改变sscanf
sscanf(string, "%d-%d-%d;", day, month, year)
我有segmentation fault
。
有人可以帮帮我吗? 使用K&R书,我找不到解决方案。
您需要传递int
变量的地址:
int day, month, year; sscanf(string, "%d-%d-%d;", &day, &month, &year);
sscanf()
返回所做的分配数量,建议在使用day
, month
和year
之前检查返回值:
if (3 == sscanf(string, "%d-%d-%d;", &day, &month, &year)) { }