Предупреждение: сравнение между указателем и целым числом

0

У меня есть функция вроде:

char * s;
{
    char * i = s, * t;

    for(t = s;*t != NULL;t++)
        if (*t == '/') i = t+1;

    return i;
}

Предупреждение, которое я получаю, - это сравнение между указателем и целым числом. Как U разрешить это?

  • 3
    Вместо *t != NULL вы должны иметь *t != '\0' .
  • 0
    Должен сказать, я никогда не видел функцию, объявленную таким образом. Это синтаксис с?
Показать ещё 3 комментария
Теги:

1 ответ

6
Лучший ответ

Прекратите рассматривать NULL как символ, он должен быть константой типа указателя.

Заголовок цикла должен быть:

for(t = s; *t != '\0'; ++t)

Это "слишком явный" способ записи, некоторые программисты на C, стремящиеся к максимальному сжатию, просто скажут:

for(t = s; *t; ++t)

Так как сравнение с '\0' совпадает с сравнением с 0, что подразумевается только при оценке выражения. Однако, я думаю, что != '\0' помогает в чтении, так как он дает понять, что происходит, мы ищем терминатор строк '\0'. Сравнение должно быть тривиально оптимизировано любым компилятором.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню