用sscanf读日期

Arr*_*tti 2 c parsing scanf

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

sscanf(string, "%[^-]-%[^-]-%[^;];", day, month, year)
Run Code Online (Sandbox Code Playgroud)

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

通过这种方式它可以工作但是当我尝试使用day/moth/year作为integer变量(使用相同的sscanf)时,我0 0 0在使用printf它时得到了一个值.如果我换sscanf

sscanf(string, "%d-%d-%d;", day, month, year)
Run Code Online (Sandbox Code Playgroud)

我有segmentation fault.

有人可以帮帮我吗?使用K&R书,我找不到解决方案.

hmj*_*mjd 7

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

int day, month, year;
sscanf(string, "%d-%d-%d;", &day, &month, &year);
Run Code Online (Sandbox Code Playgroud)

sscanf()返回所做的分配数量,建议在使用前检查返回值day,month以及year:

if (3 == sscanf(string, "%d-%d-%d;", &day, &month, &year))
{
}
Run Code Online (Sandbox Code Playgroud)