如何将int指针与char指针进行比较?

时间:2017-01-26 17:42:13

标签: c

在我的代码中,我试图在int指针和char指针之间进行比较。在strrchr完整字符串后,char指针应该保持一个整数。然后我想看看整数是否大于存储在int指针中的另一个整数。使用strcmp,或只是做> =会给我一个警告。 假设分号后总是存在一个int。

typedef struct songInfo
{
 int* ratingScore;
 char songName[80];
 struct songInfo *prev;
 struct songInfo *next;
 }songInfo;

int main()
{
 songInfo *head = NULL, *tail = NULL;
 ...
}


int insert(char *buffer, songInfo **head, songInfo **tail)
{
 ...
 char* rating = strrchr(song, ';');
 rating++;
 if ((*head)->ratingScore >= rating)
 ...
}

3 个答案:

答案 0 :(得分:2)

首先需要将键入字符串的整数的字符串表示形式(rating指向的字符串表示形式)转换为第二个整数,以将其值与整数进行比较你提到的int指针指向。

您可以使用sscanf之类的函数将字符串表示读取为整数,并且可以将读取的值与整数指针指向的值进行比较。下面是一个示例代码,可能或多或少地实现了您尝试执行的操作。

int tmp;
sscanf(rating+1, "%d", &tmp); // +1 is to skip the ';' character
if( *(*head)->ratingScore >= tmp)
{
    ...
}

请注意,由于您在我的回答评论中提到了ratingScore类型为int *,因此添加了ratingScore的解除引用运算符。 (另请注意,我不明白为什么你会把它保留为int *,但上面的代码应该满足你的约束)

Here在工作中使用了这个想法。

答案 1 :(得分:0)

嗯,当然你无法比较不同类型的2个指针,但无论如何,在我看来你更倾向于比较指向的值而不是指针。正如@ilim所说,你想使用strtol(*rating, NULL, 0)或类似的东西。

答案 2 :(得分:0)

评分指向';' 等级+ 1分到你的整数让我们说A A = atoi(评级+ 1) 所以这就是:

char* rating = strrchr(song, ';');
if ((*head)->ratingScore >= atoi(rating+1))

既然您已经证明ratingScore不是整数,而是指向整数的指针,您只需要取消引用该指针。所以这就是:

char* rating = strrchr(song, ';');
if (*((*head)->ratingScore) >= atoi(rating+1))
相关问题