我必须使用带有以下代码行的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书,我找不到解决方案。
答案 0 :(得分:7)
您需要传递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))
{
}