У меня есть функция вроде:
char * s;
{
char * i = s, * t;
for(t = s;*t != NULL;t++)
if (*t == '/') i = t+1;
return i;
}
Предупреждение, которое я получаю, - это сравнение между указателем и целым числом. Как U разрешить это?
Прекратите рассматривать NULL
как символ, он должен быть константой типа указателя.
Заголовок цикла должен быть:
for(t = s; *t != '\0'; ++t)
Это "слишком явный" способ записи, некоторые программисты на C, стремящиеся к максимальному сжатию, просто скажут:
for(t = s; *t; ++t)
Так как сравнение с '\0'
совпадает с сравнением с 0, что подразумевается только при оценке выражения. Однако, я думаю, что != '\0'
помогает в чтении, так как он дает понять, что происходит, мы ищем терминатор строк '\0'
. Сравнение должно быть тривиально оптимизировано любым компилятором.
*t != NULL
вы должны иметь*t != '\0'
.