我正在使用atoi(argv[1])
这是我的代码片段
void main(int argc, char* argv[])
{
int evenOrOdd = 0;
int inputtedNum = 0;
pid_t pid;
int i;
char buf[BUF_SIZE];
if (argc != 2)//make sure user has input correctly entered
{
printf("Please use input: ./a.out #\n");
}
else
{
inputtedNum = atoi(argv[1]);
if(inputtedNum < 0) //make sure number is positive
{
printf("Please use a positive number.\n");
return;
}
}
// ...
}
代码继续等等,但是当输入一些数字时,它有时会认为它们是负数。如果我输入123456789就没有问题并且可以正确运行程序。如果我输入 12345678910 它会认为该数字是负数。我是否在负标志翻转的地方遇到了一些缓冲区错误?我不太确定如何解决它。
感谢任何及所有帮助!
最佳答案
int
是一个比较窄的整数类型,也是一个有符号类型。使用 unsigned long
表示 inputtedNum
和 strtoul(argv[1], 0, 0)
来解析数字。
关于c - 在 C 中对 argv[1] 使用 atoi() 时出现算术溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21860412/