将字符*转换为int

invalid conversion of a char* to int

本文关键字:int 转换 字符      更新时间:2023-10-16

我被困在这一部分上,我需要在以下代码中修复编译错误的帮助。我是使用G 编译器。

错误消息如下:"从con char*到âint[-fpermissive]"

bool isRegistered(const Prefix* pre,int area,const char* publisher, int * pos)
{
int n,i=0,num,flag=0,low,high,pub;
n=*(pos);
while(pre->area[n]==area)
{
num=publisher[i]-48;
switch(pre->pubLen[n])
{
case 1:
num=publisher[i]-48;

在每种情况下,问题都在下面。

low=((*pre).pubLow[n])-48;
high=(pre->pubHigh[n])-48; 
if((num>low)&&(num<high))
{
pub=num;
}
break;
case 2:
num=(publisher[i]-48)*10+(publisher[i+1]-48);
low=(pre->pubLow[n])-48;
high=(pre->pubHigh[n])-48;
if((num>low)&&(num<high))
{
pub=num;
}
break;

前缀的定义

struct Prefix {
    int  no;             // number of entries
    int  area[MAX];      // area elements
    char pubLow[MAX][8]; // low end of publisher range
    char pubHigh[MAX][8]; // high end of publisher range
    int  pubLen[MAX];    // no of chars in publisher string
};

案例3等等....

给出pubLow

的定义

**low=((*pre).pubLow[n])-48;
high=(pre->pubLow[n])-48; **

low是一个整数,在低之前删除 **48;之后使它变成

low=((*pre).pubLow[n])-48;
high=(pre->pubLow[n])-48;

这是您的代码

 bool isRegistered(const Prefix* pre,int area, char* publisher, int * pos)
{
int n,i=0,num,flag=0,low,high,pub;
n=*(pos);
while(pre->area[n]==area)
{
num=publisher[i]-48;
switch(pre->pubLen[n])
{
case 1:
num=publisher[i]-48;
    low=atoi(((*pre).pubLow[n])-48);
high=atoi((pre->pubHigh[n])-48); 
if((num>low)&&(num<high))
{
pub=num;
}
break;
case 2:
num=(((publisher[i]-48)*10)+(publisher[i+1]-48));
low=atoi((pre->pubLow[n])-48);
high=atoi((pre->pubHigh[n])-48);
if((num>low)&&(num<high))
{
pub=num;
}
break;