Сравнение двух значений разных типов

#c #sql #windows

#c #sql #Windows

Вопрос:

У меня есть оператор if с двумя типами данных, которые я сравниваю друг с другом. rowCount3 является a SQLINTEGER и chval1[128] является a SQLCHAR . Я пробовал несколько разных типов; ни один из них не удался.

Я пробовал:

 if((SQLCHAR)rowcount3 >= (SQLCHAR)chval1)
  

Это работает только иногда. Когда я делаю a printf() для проверки возвращаемых значений, они оба выводят числа.

 printf("Total of Downloads: %dn",rowCount3);
printf("Quota of IP Address: %sn", chval1);
  

Ближайший, который я получил, является самым близким (работает ~ 60% времени):

 if (rowCount3 >= chval1)
  

Кто-то предложил strcmp() , но у меня нет опыта в этом, поэтому я заблудился в лесу! Любая помощь приветствуется. Спасибо.

Комментарии:

1. Похоже, вы пытаетесь сравнить два указателя символов, и в этом случае вам определенно следует использовать strcmp() .

2. Хорошо, но я не знаю, как это сделать. Не могли бы вы показать мне, как это сделать? Спасибо.

3. Прототипом функции является int strcmp(const char *str1, const char *str2) . Если он возвращает 0, строки равны.

4. Спасибо, я искал в Google, и, может быть, потому, что уже поздно, я не занимаюсь этим, как это? int strcmp(const char *rowCount3, const char *chval1);

5. @ME-dia: нет. Вам действительно следует взять книгу по C , если вы считаете, что у синтаксиса есть шанс работать. Вы не можете сравнивать целое число и строку напрямую. Сначала вам нужно преобразовать строку в целое число, а затем сравнить с другим целым числом.

Ответ №1:

Оба типа определяются следующим образом в <sqltypes.h>

 typedef int             SQLINTEGER;
typedef unsigned char   SQLCHAR;
  

Если вы определили свои переменные как:

 SQLINTEGER rowCount3;
SQLCHAR chval1[128];
  

это несовместимые типы. Вы должны использовать преобразование, подобное обычному atoi() преобразованию, подобному этому, и сравнить:

 int var = atoi(chval1);
if (rowCount3 >= var)
  

Комментарии:

1. Это должно сработать, но я получаю сообщение об ошибке… SQLCHAR * несовместим с параметром типа const char * на этом atoi(chval1) Как это можно исправить? Спасибо.

2. int var = atoi(reinterpret_cast<char *>(chval1));