#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));