繁体   English   中英

在sscanf中使用带有gcc的' - '字符

[英]Using '-' character in sscanf with gcc

我有以下代码片段:

char s[] = "2012-06-01-02";
int nYear;
int nMonth;
int nDay;
int nPass
sscanf(s, "%d-%d%-%d-%d", &nYear, &nMonth, &nDay, &nPass);

此代码使用Visual Studio按预期工作,但我使用gcc获得以下编译警告

warning: unknown conversion type character '-' in format

然后,如果我运行代码,我得到nYear,nMonth的预期值,但nDay和nPass都是0。

为什么这不起作用?

你有%-在那里我认为你不想要。 删除%

sscanf(s, "%d-%d%-%d-%d", &nYear, &nMonth, &nDay, &nPass);
                ^
                |--- delete this '%'

你最终想要的是这样的:

sscanf(s, "%d-%d-%d-%d", &nYear, &nMonth, &nDay, &nPass);

顺便说一句,如果你是初学者,你可能想看看clang 在这种情况下,您将获得更好的错误消息,它将帮助您更快地学习。 例:

example.c:10:22: warning: invalid conversion specifier '-'
      [-Wformat-invalid-specifier]
    sscanf(s, "%d-%d%-%d", &nYear, &nMonth, &nDay, &nPass);
                    ~^
1 warning generated.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM