Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
#1

функция strlen - C++

28.02.2013, 20:45. Просмотров 689. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
#define maxline 1000 // for s[]
#define eof -1 //for CRZL+Z
bool palindromes(char s[]);
int main()
{   char ch[maxline];
    int i,c;
    for (i=0; i<maxline-1 && (c=getchar())!=eof && c!='\n';i++)
    {
        ch[i]=c;
        ch[i]='\0';
        i++;
    }
    if (palindromes(ch)==true)
        printf("This word is a palindrome");    
    else printf("not palinrodme");
 
    getch();
    return 0;
}
 
bool palindromes(char s[])
{   int i,l;
    bool b=true;    
    
 
    l=strlen(s);
    for (i=0; i<l/2 && b; i++)      
            if (s[i]!=s[l-1-i]) 
            b=false;
        
    return b;
}
Программка должна определить, введенное слово палиндром или нет..
Но в функции palindromes я использовал функцию l=strlen(s), которая все время возвращает 0. Почему?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2013, 20:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос функция strlen (C++):

Не работает функция strlen - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; int main() { string s; int n=0,i=0,j=0,length=0; ...

Что делает функция strlen() ? - C++
Функция strlen()…что она делает...?

Что выполняет функция strlen()? - C++
Как она работает в этой программе? Для чего она нужна здесь? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Функция strlen возвращает неверную длину строки - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;cstdio&gt; using namespace std; int main () { wchar_t x; char str; ...

Не понимаю, почему не работает стандартная функция strlen - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;string.h&quot; using namespace std; int _tmain(int argc, _TCHAR* argv) { ...

Функция strlen() . Получить количество символов в строке - C++
В чем ошибка? #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void opr(); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tolias28
205 / 120 / 2
Регистрация: 18.08.2010
Сообщений: 1,011
28.02.2013, 20:52 #2
Потому что в цикле вы всем элементам массива присваиваете '\0'. А это конец строки. Функция strlen() находит, что первый символ равен '\0', значит длина строки равна нулю. Все правильно.

Эта конструкция в цикле бессмысленная:
C++
1
2
ch[i]=c;
ch[i]='\0';
Вы присваиваете сперва элементу под номером i значение переменной c, а потом тут же этот элемент затираете нулем(концом строки). Зачем?
0
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
28.02.2013, 20:54  [ТС] #3
Tolias28, эм... да это лишнее
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 20:54
Привет! Вот еще темы с ответами:

Функция strlen() на русской раскладке считает один символ за 2 - C++
Объясните пожалуйста почему функция &quot;strlen()&quot; считает очень странным образом пишешь Английскими буквами считает правильно, перехожу на...

Функция strlen перед вызовом моей функции портит строку в конфигурации Release MS Visual C++ 2013 - C++
Написал функцию RemoveChars, которая убирает символы перевода строки в строке. Если в конфигурации проекта Visual C++ в Microsoft Visual...

strlen()+1 - C++
Зачем использовать strlen в данном случае? char s; get.cin(s,strlen(s)+1);

strlen - C++
Есть ли подобие strlen, но для других типов данных? int*, short* и тп?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru