-5

我想将函数值返回给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().

4

3 回答 3

2

只需返回一个std::string

std::string Deco(char *DESTINATION){

   // rest of code here

   return str;
}

此外,您缺少int返回说明符main并且Deco(char)没有意义。

另外,请更改行:

string str(line); 

str = line;
于 2013-09-05T10:48:16.963 回答
1

改变

char Deco(char *DESTINATION){

string Deco(char *DESTINATION){

然后在 main 中,您可以将返回值分配给字符串或内联使用它

string deco = Deco(...

或者

cout<<Deco(...
于 2013-09-05T10:51:55.350 回答
1

您正在返回一个指向局部变量的指针。这为调用者提供了一个悬空指针,并且是未定义的行为。除此之外,返回类型与您返回的内容不匹配。

你可以通过返回一个来省去一些麻烦std::string

std::string Deco(const char *DESTINATION)
{
 ....
 return str;
}

int main()
{
  std::cout << Deco("Hello") << std::endl;
}
于 2013-09-05T10:48:27.073 回答