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

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

Восстановить пароль Регистрация
 
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
28.02.2013, 20:45     функция strlen #1
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. Почему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2013, 20:45     функция strlen
Посмотрите здесь:

strlen C++
C++ strlen
C++ Не понимаю, почему не работает стандартная функция strlen
C++ strlen()+1
strlen C++
Что выполняет функция strlen()? C++
C++ Что делает функция strlen() ?
C++ Не работает функция strlen

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

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

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

Текущее время: 05:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru