我尝试使用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);
}
答案 0 :(得分:2)
sscanf
返回成功扫描和分配的字段数(如果出现错误,则返回SELECT *
FROM table1 JOIN table2 ON table1.id = table2.id;
)。您正在检查EOF
是否都没有成功,即没有从字符串中解析出数字。这意味着即使可以解析一个整数,也不会执行%d
。所以改变
if
到
if (sscanf(now,"%d/%d/%d/%d/%d\n",&year,&month,&hour,&min,&sec) == 0)
即使无法解析一个数字,也会执行if (sscanf(now, "%d/%d/%d/%d/%d", &year, &month, &hour, &min, &sec) != 5)
。我删除了if
因为它在这里没有任何影响。