【发布时间】:2018-10-18 03:20:23
【问题描述】:
我试图从一个函数中返回一个 char*,该函数通过取给它的两个字符串的一部分来形成一个字符串。该字符串必须以 char* 形式返回。但是当我运行以下代码时,不会打印任何输出。请帮助解决此问题。
#include <iostream>
#include<string.h>
using namespace std;
char *findpass(char *s1, char*s2)
{
int sl1 = strlen(s1);
int sl2 = strlen(s2);
int i = 0, in = 0;
char temp[100];
char *t;
if (sl1 % 3 == 0)
{
for (i = 0; i<sl1 / 3; i++)
{
temp[in] = *(s1 + i);
in++;
}
}
t = temp;
return t;
}
int main()
{
char i1[10], i2[10];
char *f1, *f2;
cin >> i1 >> i2;
f1 = i1;
f2 = i2;
char *f = findpass(f1, f2);
cout << f;
return 0;
}
【问题讨论】:
-
你必须将内存
(malloc)分配给指针t。 -
temp是findpass()的本地对象 -
我试过malloc,还是不行:t=(char*)malloc(10);
-
不使用
char *s,而是使用std::string,您可以按值返回