我想将函数值返回main()
。这是我的代码:
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <fstream>
using namespace std;
void Cryp(char *str){
int len = strlen(str);
int ch;
for(int i=0;i<len;i++){
ch = str[i];
ch = ~ch;
str[i]=ch;
}
}
char Deco(char *DESTINATION){
string line,str;
ifstream myfile(DESTINATION);
if (myfile.is_open())
{
while (getline (myfile,line))
{
string str(line);
str.erase (str.begin()+0, str.end()-9);
cout<<str; // THIS HAS TO BE RETURNED TO main()!-BUT HOW ??
}
myfile.close();
//remove(DESTINATION);
}
else cout << "Unable to open file";
return str.c_str();
}
int Dec(char *SOURCE, char *DESTINATION){
char Byte;
FILE *inFile = fopen(SOURCE,"rb");
FILE *outFile = fopen(DESTINATION,"wb");
if(inFile==NULL||outFile==NULL){
if(inFile) fclose(inFile);
if(outFile) fclose(outFile);
return 1;
}
else{
while(!feof(inFile)){
Byte = (char)fgetc(inFile);
char newString[256];
sprintf(newString, "%c", Byte);
Cryp(newString);
fputs(newString, outFile);
}
fclose(inFile);
Deco(DESTINATION);
}
return 0;
}
main()
{
Dec("/home/highlander/NetBeansProjects/simple/dist/Debug/GNU-Linux-x86/text.dat","/home/highlander/NetBeansProjects/simple/dist/Debug/GNU-Linux-x86/text_instant.dat");
cout<< Deco(char);
}
如何将函数str
中的char Deco(char *DESTINATION)
值传递给main()
。
提前致谢...
答案 0 :(得分:2)
只需返回std::string
:
std::string Deco(char *DESTINATION){
// rest of code here
return str;
}
此外,您遗失了int
的{{1}}返回说明符,而main
没有任何意义。
另外,请更改一行:
Deco(char)
到
string str(line);
答案 1 :(得分:1)
您正在返回指向局部变量的指针。这给了一个指向调用者的悬空指针,并且是未定义的行为。除此之外,返回类型与您返回的类型不匹配。
通过返回std::string
:
std::string Deco(const char *DESTINATION)
{
....
return str;
}
int main()
{
std::cout << Deco("Hello") << std::endl;
}
答案 2 :(得分:1)
更改
char Deco(char *DESTINATION){
到
string Deco(char *DESTINATION){
然后在main中,您可以将返回值分配给字符串或使用内联
string deco = Deco(...
或
cout<<Deco(...