我正在尝试使用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语句中?有什么帮助吗?
答案 0 :(得分:2)
在将字符串转换为int之前,需要对字符串进行一些错误检查。您可能想尝试strtol()函数。它检查字符串是否可以转换为long int。它返回转换后的值,如果无法转换字符串,则返回零。
第二个arg to strtol()是一个char **。函数完成后,它指向字符串中不是合法数字字符的第一个字符。因此,如果它指向字符串结尾之前的任何位置,则转换失败。
http://www.tutorialspoint.com/c_standard_library/c_function_strtol.htm
答案 1 :(得分:1)
我假设port_number的类型为char *。
你在那里的if语句是将port_number C字符串的地址与i的值进行比较,我认为这不是你想要做的。
如果要使用ctype.h,则可以使用函数“isdigit()”来检查port_number的每个元素。否则,接下来最好的事情是遍历port_number,并确定每个元素是否在ascii char'0'和'9'之间,以确保正确输入端口号。
答案 2 :(得分:0)
想想你在那里比较的东西:
if(i != port_number)
{
//code
}
我是int类型,port_number是char *。
答案 3 :(得分:0)
char *check = strdup(port_number);
sprintf(check, "%i", i);
if(strcmp(check, port_number))