【发布时间】:2024-01-11 00:20:01
【问题描述】:
我尝试使用sscanf() 检查字符串的格式。即使它与格式不匹配,它也不会打印错误。我不知道它有什么问题。
char *now = 1; // assume this is the user-entered string
int year,month,hour,min,sec;
//CHECKING IF THE ARGUMENT IS CORRECT OR NOT
if (sscanf(now,"%d/%d/%d/%d/%d\n",&year,&month,&hour,&min,&sec) == 0)
{
fprintf(stderr,"\x1b[1;31mMust specify correct format\nExiting........\x1b[0m\n");
_exit(1);
}
【问题讨论】:
-
我不确定您希望
char *now = 1做什么。您是否打算将指针初始化为 1? -
...或者,在最后一条评论的支持下,检查
EOFper this sscanf documentation。 -
@ryyker 是的。假设像 char *now = 2000/300/2。它应该给出一个错误,因为它不是格式 %d/%d/%d/%d/%d
-
char *now = 2000/300/2不是合法的初始化。尼特是:char *now = 1;。可以char *now = "2000/300/2" -
sscanf()返回成功分配的字段数(或 EOF 错误)...