c - 用 sscanf 读取日期

标签 c parsing scanf

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

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

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

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

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() 返回赋值次数,建议在使用daymonthyear<之前检查返回值:

if (3 == sscanf(string, "%d-%d-%d;", &day, &month, &year))
{
}

关于c - 用 sscanf 读取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12071342/

相关文章:

c - 通过scanf读取c中的两个数组时,第二个以某种方式修改了第一个

c - mman.h 确实导入了 mmap 函数但未能导入 mremap

c - 如何摆脱 perf 中的 "unknown"部分

c - 为什么 scanf() 不等待键盘输入?

c - 几个字符没有打印

java - Jsoup 停止解析网页

c - 双循环的 kbhit() 不能很好地工作

c++ - 使用配置文件部署可执行文件

parsing - 左递归和右递归是否产生相同的解析树?

java - 反序列化 GSON 中对象的 JSON 集合(可能与另一个集合)