【发布时间】:2014-02-04 19:15:30
【问题描述】:
我正在尝试使用 atoi 将字符串转换为 int,然后检查字符串是否确实是整数。
这是我的代码:
printf("Please input the port: ");
scanf("%s",port_number);
int i = atoi(port_number);
if(i != port_number)
{
errno = ERR_INVALID_PARAM;
printf("Error invalid port number\n");
}
但是,即使我的字符串“port_number”是一个整数,它仍然会出现在 if 语句中吗?有什么帮助吗?
【问题讨论】:
-
你正在尝试比较一个整数和一个字符串...
-
不能用这种方式比较整数和字符串。看这里stackoverflow.com/questions/3850558/…
-
您的示例不完整。我们至少缺少
port_number的定义。 -
你是用 C 语言写的吗?还是 C++?
-
port_number是如何声明的?如果是int,那么您的电话scanf("%s",port_number)具有未定义的行为;第二个参数需要是一个char*,指向一个足够大的缓冲区来保存结果(对于一个裸"%s",可以任意长)。如果是char*,那么比较i != port_number甚至不应该编译。 (实际上 gcc 只是发出警告,但您需要注意警告。)请给我们一个完整的程序。由于您不知道问题是什么,因此您不知道代码的哪些部分是不相关的。 sscce.org