在C中检查溢出long-long

在C中检查溢出long-long,c,overflow,long-long,C,Overflow,Long Long,我想检查fgets中的变量在C语言中没有溢出ling long int。 我试过这个: long long x; fgets(...) ... if(x <= LLONG_MAX && x >= LLONG_MIN) 但它不起作用,因为long int将接收太大的数字;信息技术 我想可以回到LLONG_MIN+excess。当您试图从char*转换为long long时,请使用strtoll。这些行取自strtoll文档: strtol函数返回转换结果,除非该值会

我想检查fgets中的变量在C语言中没有溢出ling long int。 我试过这个:

long long x; 
fgets(...)
...
if(x <= LLONG_MAX && x >= LLONG_MIN)
但它不起作用,因为long int将接收太大的数字;信息技术 我想可以回到LLONG_MIN+excess。当您试图从char*转换为long long时,请使用strtoll。这些行取自strtoll文档:

strtol函数返回转换结果,除非该值会下溢或溢出。如果发生下溢,strtol返回LONG_MIN。如果发生溢出,strtol返回LONG_MAX。在这两种情况下,errno都设置为ERANGE。使用LLONG_MIN和LLONG_MAX而不是LONG_MIN和LONG_MAX的strtoll也是如此


真正地就这么一点点非代码?读取和a如何?x怎么可能超出类型限制的范围,除非其类型范围大于long long?请参阅long long int是一个很大的内存。你肯定不会收到太多的数字。