2013-02-26 6 views
1

У меня есть следующий фрагмент кода:Использование «-» символ в sscanf с НКУ

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.

Почему это не работает?

ответ

4

У вас есть %-, где я думаю, что вы не хотите. Удалите %:

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. 
+0

Да! как я пропустил это ?! – Moe

 Смежные вопросы

  • Нет связанных вопросов^_^