我有以下代码:
int check_for_non_number(char *input, int lineNum)
{
errno = 0;
char *endptr;
printf("%s\n",input);
double xnum = strtod(input, &endptr);
// IF endptr FOUND A NON-VALID ENTRY AND THAT ENTRY IS NOT THE NEW LINE CHARACTER THEN ITS AN ERROR
if((*endptr) && (*endptr != '\n'))
{
return 1;
}
// We still want to process this number, even if it is represented as inf, so inform the user in the terminal and then return 0
else if (errno == ERANGE)
{
printf("\nOPERAND IS OUT OF RANGE ON LINE %d\n",lineNum);
return 0;
}
// ELSE IF endptr FOUND A NON-VALID ENTRY AND THAT ENTRY IS THE NEW LINE CHARACTER THEN RETURN 2 TO CHECK IF IT SHOULD BE A NEW LINE
else if((*endptr) && (*endptr == '\n'))
{
return 2;
}
else
{
return 0;
}
}
的值input
来自strtok()
并被传递到check_for_non_number
函数中......
问题是当 strtok 从文本文件中读取“inf”时,我的函数返回 1,暗示第一个参数为真……为清楚起见,文本文件中的“inf”位于文本行的中间文件,因此在它之前和之后都有文本,并且在它之前和之后都使用了 strtok。
如果有人能阐明为什么strtod()
不将“inf”作为输入来处理,将不胜感激!