Сравнение символов функцией strcmp()

Рейтинг: 0Ответов: 3Опубликовано: 07.07.2011

Есть некая функция:

void slovo(char *stroka)
{
...
if( strcmp(stroka[i]," ")!=0)
...
}

При компиляции компилятор выдаёт такую ошибку:

error C2664: 'strcmp' : cannot convert parameter 1 from 'char' to 'const char *'

Не понимаю, что не так... Мне нужно сравнить символ из массива с пробелом.

Ответы

▲ 2Принят

Делайте проверку так (если вы хотите найти пробел в строке):

if (stroka[i] == ' '){}

в этом случае у вас сравниваются два одинаковых типа данных (char)

▲ 10
if (stroka[i] != ' ') {
   // Это сравнение i-го символа из строки с пробелом
   // здесь он не равен пробелу.
}

Внимательно прочитайте man 3 strcmp

if (strcmp(stroka," ") != 0) {
   // Это сравнение всей строки с строкой из одного пробела
}

if (strcmp(&stroka[i]," ") != 0) {
   // А это сравнение конца строки (начиная с i-го символа) 
   // с строкой из одного пробела
   // тот же результат даст вызов strcmp(stroka+i," ")

Почитайте про адресную арифметику и представление в памяти массивов и строк.

▲ 1

вообще лучше использовать стандартную библиотеку STL и тип string. У него есть метод compare посмотрите ссылку ниже http://www.cplusplus.com/reference/string/string/compare/