Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пустая строка

249
20 августа 2005 года
DissDoc
639 / / 01.10.2004
Условие такое: есть строка из символов a и b. Если символ а, то в str2 вводим "00", если b - то "01". Проблема в том, что я никак не могу написать функцию, которая это делала бы! У меня функция ничего не выводит, хотя теоритически она верна! Вот полный код программы!
Код:
#include <tchar.h>
#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

char *i(char *s1)
{
  char s2[512]={0};
  while ((*s1 = getchar()) != '\n')
  {
    switch(*s1)
    {
      case 'a':
        strcat(s2, "00");
        break;
      case 'b':
        strcat(s2, "01");
        break;
    }
  }
  return s2;
}

int main()
{
    char str1[255] = {0},
        str2[512] = {0};

    cout << "Enter your string:" << endl;
    cin >> str1;
    strcpy(str2,i(str1));
    cout << "Your string is: " << str2 << endl;

return 0;
}
406
20 августа 2005 года
vitaly2003s
481 / / 27.07.2004
Ну тогда напиши хоть так чтоли:

char *i(char *s1)
{
char* s2=new char [strlen(s1)*2];
char* retstr=s2;
memset(s2,0,strlen(s1)*2);
while (*s1)
{
switch(*s1)
{
case 'a':
strcat(s2, "00");
*s2++;
break;
case 'b':
strcat(s2, "01");
*s2++;
break;
default:
*s2=*s1;
}
s1++;
s2++;
}
return retstr;
}
2
22 августа 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by DissDoc
У меня функция ничего не выводит, хотя теоритически она верна!


я конечно не большой спец в программировании, но почему то мне кажется, что функция не верна теоретически ;) у вас функция возвращает указатель на локальную переменную. это неправильно. если хотите, чтобы программа работала именно так - сделайте s2 статической переменной. а лучше - передавайте в функцию ДВА параметра - один исходная строка, вторая - строка для выдачи результата.

299
22 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by squirL
я конечно не большой спец в программировании, но почему то мне кажется, что функция не верна теоретически ;) у вас функция возвращает указатель на локальную переменную. это неправильно. если хотите, чтобы программа работала именно так - сделайте s2 статической переменной. а лучше - передавайте в функцию ДВА параметра - один исходная строка, вторая - строка для выдачи результата.


Совершенно верно. Переменная функции является "живой" толька во время работы этой самой функции.

3
22 августа 2005 года
Green
4.8K / / 20.01.2000
М-да... меня "радуют" такие сочетания:
Цитата:

using namespace std;
char s2[512]={0};


и ещё такие:

Цитата:

#include <iostream>
#include <stdio.h>



Может начнем на C++ писать? Проблем поуменьшится:

Код:
#include <string>

std::string func(const std::string& source)
{
    std::string result;
    for(int i=0; i < source.size(); ++i)
    {
        switch(source)
        {
        case 'a':
            result += "00";
            break;

        case 'b':
            result += "01";
            break;

        default:
            result += source;
        }
    }
    return result;
}
2
22 августа 2005 года
squirL
5.6K / / 13.08.2003
2Green
пришел лесник и всех разогнал? :)

у автора понятно почему код не работает, а вот я не пойму, почему он работает у вас?
что из себя представляет возвращаемое значение? по идее - локальная переменная result не должна пережить функцию?
3
22 августа 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by squirL
2Green
пришел лесник и всех разогнал? :)

у автора понятно почему код не работает, а вот я не пойму, почему он работает у вас?
что из себя представляет возвращаемое значение? по идее - локальная переменная result не должна пережить функцию?


А локальная переменная тут ни при чем.
Ты же не удивляешься, почему работает такой код:

 
Код:
int func()
{
  int result;
  return result;
}
249
22 августа 2005 года
DissDoc
639 / / 01.10.2004
Цитата:
Originally posted by Green
А локальная переменная тут ни при чем.
Ты же не удивляешься, почему работает такой код:
 
Код:
int func()
{
  int result;
  return result;
}



Ага, я разобрался! Но на С++ не перешел! Просто помимо всего прочего нужно передвигаться по символам! А я не двигался!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог