Ваш код работает при правильном использовании (самый простой способ, чтобы просто передать местный CString как это):
char test[] = "stackoverflow.com";
client::get_upper(test); // client interpreted as a namespace
Теперь ваша функция полна плохих подходов, а именно избыточной копии которая остается неуправляемым (утечка памяти).
переписан немного:
int client::get_upper(char *item_in)
{
unsigned int length = strlen(item_in);
for(int i = 0; i < length; ++k)
item_in[i] = toupper(item_in[i]);
return 0;
}
Если вы хотите немного поэкспериментировать, здесь что-то для вас, просто для удовольствия:
int client::get_upper(char *item_in)
{
int length = strlen(item_in);
for(int i = 0; i < length; ++i)
if((item_in[i] >= 97 && item_in[i] <= 122))
item_in[i] = (int)item_in[i] - 32;
return 0;
}
И ваша ошибка, скорее всего, исходит из того, что вы «пытаюсь вытолкнуть динамический массив символов, которые вы, вероятно, не продумали. Просто используйте локальную строку символов, простой массив с нулевым символом. Вы действительно не давали так много, чтобы продолжать, так что это всего лишь угадывающая работа. Все, что я могу сделать, это помочь вам упростить свое выражение. Поскольку возвращаемое значение ничего не делает, попробуйте применить его к чему-либо или переключиться на void
.
Надеюсь, это поможет.
Показать, как вы * звоните * эта функция. –
Любая причина, по которой вы выделяете второй массив символов, а не просто писать буквы верхнего регистра в исходный массив напрямую? (Кстати, у вас утечка памяти, потому что вы никогда не делаете delete [] temp_str в конце функции) –
Лорд спаси нас от учителей «С уроками»! –