Пустая строка
#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;
}
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;
}
У меня функция ничего не выводит, хотя теоритически она верна!
я конечно не большой спец в программировании, но почему то мне кажется, что функция не верна теоретически ;) у вас функция возвращает указатель на локальную переменную. это неправильно. если хотите, чтобы программа работала именно так - сделайте s2 статической переменной. а лучше - передавайте в функцию ДВА параметра - один исходная строка, вторая - строка для выдачи результата.
я конечно не большой спец в программировании, но почему то мне кажется, что функция не верна теоретически ;) у вас функция возвращает указатель на локальную переменную. это неправильно. если хотите, чтобы программа работала именно так - сделайте s2 статической переменной. а лучше - передавайте в функцию ДВА параметра - один исходная строка, вторая - строка для выдачи результата.
Совершенно верно. Переменная функции является "живой" толька во время работы этой самой функции.
using namespace std;
char s2[512]={0};
и ещё такие:
#include <iostream>
#include <stdio.h>
Может начнем на C++ писать? Проблем поуменьшится:
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;
}
пришел лесник и всех разогнал? :)
у автора понятно почему код не работает, а вот я не пойму, почему он работает у вас?
что из себя представляет возвращаемое значение? по идее - локальная переменная result не должна пережить функцию?
2Green
пришел лесник и всех разогнал? :)
у автора понятно почему код не работает, а вот я не пойму, почему он работает у вас?
что из себя представляет возвращаемое значение? по идее - локальная переменная result не должна пережить функцию?
А локальная переменная тут ни при чем.
Ты же не удивляешься, почему работает такой код:
{
int result;
return result;
}
А локальная переменная тут ни при чем.
Ты же не удивляешься, почему работает такой код:
{
int result;
return result;
}
Ага, я разобрался! Но на С++ не перешел! Просто помимо всего прочего нужно передвигаться по символам! А я не двигался!