将char*转换为char?c++

convert char* to char? c++

本文关键字:char c++ 转换      更新时间:2023-10-16

我想这个问题已经被问了一百万次了,但我在任何地方都找不到答案。应该很简单。好的,所以我在.h文件中有一个结构:

struct question{
    string programNum;
    string programDesc;
    string programPoints;
    string programInput;
    char programQuestion;
};

然后我在.h中启动了函数,在.cpp:中启动了参数

void setQuestionFileName(question q, char fileName){
    q.programQuestion = fileName;
}

到目前为止一切都很好。现在,我主要有一个问题,试图在程序中存储argv[1]问题:

char* fileName = argv[count+1];

然后是:

setQuestionFileName(questions[count],fileName);
cout << questions[count].programQuestion << endl;

我真的不擅长指针,所以如果有人能帮我把char*argv存储到char-questions[count].programQuestion中,那就太棒了。非常感谢。

我将发布代码,我认为这样做可能会更好。这是.h:

      using namespace std;
      // Data
      struct question{
      string programNum;
      string programDesc;
      string programPoints;
      string programInput;
      char* programQuestion;
      };
      void setQuestionFileName(question* q, char* fileName);
      void display(question* q);
      void display(question* q);

这是.cpp

    using namespace std;

    void setQuestionFileName(question* q, char* fileName){
        strcpy(q->programQuestion, fileName);
    }
    void display(question* q){
           cout << "Description           =  "   << q->programDesc     << endl;
           cout << "Number of Points      =  "   << q->programPoints   << endl;
           cout << "Name of Question File =  "   << q->programQuestion << endl;
    }
    // Not used or tested yet
    int myCompare (const void * a, const void * b ) {
               const char *pa = *(const char**)a;
               const char *pb = *(const char**)b;
               return strcmp(pa,pb);
     }

和main.cpp:

     using namespace std;
     int main(int argc, char* argv[]){                                                              //or char** argv
     question* questions[argc-1];                                                           //Array of questions to be filled by loop.
     int sizeOfQuestions = argc;                                                                    //number of questions passed in at run time
     int numLines = 0;                                                                          //number of lines in file
     for(int i=0;i<argc;i++){                                                                   //Test loop to make sure the command line file names are read in
              std::cout << argv[i] << " says hello" << std::endl;
     }
     for(int count=0;count<sizeOfQuestions-1;count++){                                          //This loop places the information from the files into structs
     //char fileName = argv[count+1];
     char* fileName = argv[count+1];
     cout << "Problem number:  " << count+1 << "t Working with file " << fileName << endl;
     std::fstream questionFile (fileName, std::fstream::in);                                    //Open the file
     if(questionFile.good()){
        cout << "File Opened" << endl;
        setQuestionFileName(questions[count],fileName);
        cout << questions[count]->programQuestion << endl;
        getline(questionFile,questions[count]->programNum);
        getline(questionFile,questions[count]->programDesc);
        getline(questionFile,questions[count]->programPoints);
        getline(questionFile,questions[count]->programInput);
        display(questions[count]);
        questionFile.close();
     }else{
        cout << "Could not open file!!!" << endl;
     }
 }
 return 0;
}

现在的情况是,我有一个分割错误。

programQuestionchar更改为char*

而且,这个功能

void setQuestionFileName(question q, char fileName){
    q.programQuestion = fileName;
}

我认为应该是

void setQuestionFileName(question& q, char* fileName){
    strcpy(q.programQuestion, fileName);
}

几乎没有一个文件的名称只有一个字符。