#c #for-loop #compiler-errors #c99 #strlen
#c #for-цикл #ошибки компилятора #c99 #strlen
Вопрос:
Заголовок — это точная ошибка, которую выдает мой компилятор (geany на ubuntu), когда я пытаюсь скомпилировать. Рассматриваемая часть кода заключается в следующем:
for(int q=strlen(stringA)-1;q>0;q--)
{
//do stuff
}
Я уже установил режим C99, и инициализация переменных в заголовке ‘for’ принята. Является ли то, что я сделал, просто незаконным в C?
Комментарии:
1. Отсутствует
#include <string.h>
? (Кстати, зачем использовать typeint
?)2. Хорошо, это действительно достало меня, потому что я использовал strlen много раз в одном и том же коде, но компилятор выдавал мне только «предупреждения». Теперь это работает.
3. Вы имеете в виду, что я должен использовать short? Конечно, это оптимизация, которую я имел в виду, но я обычно оптимизирую такие вещи (не связанные с логикой) в конце.
4. На этой справочной странице показано, что возвращается:
size_t strlen(const char *str);
5. …but
size_t
unsigned
— это тип данных, поэтому цикл, который проверяетq >= 0
, будет бесконечным. Однако вы этого не делаете — по какой-то причинеq > 0
вам не нужен нулевой элемент.
Ответ №1:
Я предполагаю, что вам не хватает включения. Попробуйте:
#include <string.h>
Комментарии:
1. Я не заметил, что она отсутствует по причине, которую я написал в области комментариев моего вопроса. Спасибо.