bool is_legal_size_spec(char *timeSpec){
char timeSpecArray[100];
strcpy(timeSpecArray, timeSpec);
char restrictions[] = {100,12,31,24,60,60};
char delimiter[] = " yndhms";
char *token = strtok(timeSpecArray, delimiter);
printf("%s", token);
if((int)token > restrictions[0]){
printf("%s", "No");
return 0;
}
我必须将令牌与限制中的第一个元素进行比较,但是我收到一条错误消息,提示从指针转换为不同大小的整数,有人有什么建议吗?我环顾四周,找不到任何东西。谢谢,谢谢。
答案 0 :(得分:0)
(int)token > restrictions[0]
这是将token
强制转换为int
的原因,是您收到该错误消息的原因。 token
是指向零终止字符串的指针,该字符串不容易与数字(restrictions[0]
)进行比较。您必须将字符串转换为数字,例如使用strtol()
:
#include <errno.h>
#include <stdlib.h>
// ...
char *end;
errno = 0;
long value = strtol(token, &end, 10);
if(token == end || errno == ERANGE) {
// conversion failed :(
}
else if (value > restrictions[0]) {
// ...
}