Избиваться от предупреждения: "неявная декларация функции «strlen»? - C (СИ)
Формулировка задачи:
Добрый день!Подскажите, пожалуйста, как избиваться от предупреждения:"неявная декларация функции «strlen»? Программа написана в среде Eclipse, ОС Ubuntu 12.04.
Условие:
Составить программу, определяющую, является ли заданная символьная строка с завершающим нулем палиндромом.
#include <stdio.h>
#include <locale.h>
#include <stddef.h>
#define MaxLength 255 //Максимальная длина вводимой строки
//Данная функция принимает строку и размер строки.
//Затем сравнивает 1ый символ сначала строки и с конца. Если символы разные, то функция возвращает 1
//если функция проходит до середины строки и различных символов не находит, то возвращает 0.
int PolindromTest(char *StrB, size_t n)
{
for (ptrdiff_t i=0;i<(n/2); i++)
if (*(StrB+i) != *(StrB+n-i-1)) return 0;
return 1;
}
//Данная функция принимает строку и обеспечивает ввод данных в эту строку из канала stdin.
//Если была введена строка нулевой длины, то возвращает 1
//Если была введена строка длиной более 255 символов бозвращает 2
//Если ввод был корректен, то возвращает, длину строки.
//Ошибка ввода-3.
size_t InputString(char *StrB)
{
if (fgets(StrB,MaxLength+5,stdin)==NULL) return 3;
//const char *Strin=StrB;
size_t i=strlen(StrB);
i--;
if (i>MaxLength) return 2;
if (i==0) return 1;
StrB[i]='\0';
return 0;
}
int main()
{
setlocale (LC_ALL,"RUS");
printf("Данная программа опредлеят, является ли заданная символьная строка палиндромом.\nВведите строку, длиной не превышающей 256 знаков.\n");
char String[MaxLength];//В строке String будет храниться строка.
size_t len=InputString(String); //Длина строки.
if (len==1)
{
printf("Была введена строка нулевой длины");
return 0;
}
else if (len==3)
{
printf ("Ошибка ввода.");
return 0;
}
else if (len==2)
{
printf("Длина введенной строки превышает 256 символов");
return 0;
};
int Polindrom=PolindromTest(String, len);
if (Polindrom)
printf("Yes");
else printf("Строка не является полиндромом");
return 0;
}Решение задачи: «Избиваться от предупреждения: "неявная декларация функции «strlen»?»
textual
Листинг программы
#include <string.h>
Объяснение кода листинга программы
- Включаем заголовочный файл
- Включает в программу библиотеку string.h - Создаём функцию main() -
Означает точку входа в программу - В функции main() создаём переменную s типа char с ненулевым значением -
Присваиваем переменной s значение «Hello, World!» - Создаём переменную n типа int и присваиваем ей значение 0 -
Присваиваем переменной n значение 0 - В цикле while() выводим на экран значение переменной s -
Выводим на экран значение переменной s - Условие цикла while() -
Проверяем, что значение переменной n не равно 0 - Если условие истинно, то выполняем оператор break() -
Если условие истинно, то завершаем цикл - В противном случае выполняем присваивание переменной n значение strlen(s) + 1 -
При присваивании переменной n значение strlen(s) + 1 - Переменная s объявлена в автоматической области видимости функции main() -
Переменная s объявлена в функции main() - Функция main() возвращает значение 0 -
Означает успешный конец работы программы - Создаём новую функцию test() -
Создаёт функцию с именем test() - В функции test() создаём переменную s типа char с ненулевым значением -
Присваиваем переменной s значение «Hello, World!» - Создаём переменную n типа int и присваиваем ей значение 0 -
Присваиваем переменной n значение 0 - В цикле while() выводим на экран значение переменной s -
Выводим на экран значение переменной s - Условие цикла while() -
Проверяем, что значение переменной n не равно 0 - Если условие истинно, то выполняем оператор break() -
Если условие истинно, то завершаем цикл - В противном случае выполняем присваивание переменной n значение strlen(s) + 1 -
При присваивании переменной n значение strlen(s) + 1 - Переменная s объявлена в автоматической области видимости функции test() -
Переменная s объявлена в функции test() - Функция test() возвращает значение 0 -
Означает успешный конец работы функции test() - В функции main() создаём экземпляр функции test() -
Создаёт экземпляр функции test()