假设我有一个十进制数字文件,它应该是可以放入的值int
,但我想以编程方式验证该文件的内容以检查溢出。有没有一种简单的方法来检查是否有任何数字会溢出整数?
前任。文件 -
name: test.txt
value: 4343214321423142314
如果我要循环并做fscanf(fd, "%d", &myint)
我们将返回一个成功的指示,但存储在 myint 中的数字将不正确。
同样,如果我将它读入一个字符数组fscanf(fd, "%s", &mystr)
并盲目调用atoi(mystr)
它会返回成功但结果不正确。
鉴于将其读入字符串的第二个示例,可以执行以下操作:
char buf[11] = {'\0'};
sprintf(buf, "%d", INT_MAX);
fscanf(fd, "%s", &mystr);
if(strcmp(mystr, buf) > 0)
// handle error case
但是有没有更简单的方法可以做到这一点而不需要额外的数组和字符串比较功能?