我必须使用 sscanf 和这行代码从 char* 字符串中读取日期格式 (dd-mm-yyyy;):
sscanf(string, "%[^-]-%[^-]-%[^;];", day, month, year)
其中日/月/年是 char* 字符串,每个 3/3/5 个元素。
以这种方式它可以工作,但是当我尝试使用日/月/年作为 integer
变量(具有相同的 sscanf
)时,我得到了一个 0 0当我在它们上使用
值。如果我将 printf
时为 0sscanf
更改为
sscanf(string, "%d-%d-%d;", day, month, year)
我得到了段错误
。
有人可以帮助我吗?使用K&R book,我没有找到解决方案。
最佳答案
你需要传递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))
{
}
关于c - 用 sscanf 读取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12071342/