如何在c ++

时间:2016-10-29 12:43:33

标签: c++ visual-studio mkdir

我正在尝试使用Visual Studio 2015在Windows 10上创建一个程序,该程序会将某些文件sim链接到某些位置。我正在尝试制作一个文本文件,其中包含文件的位置以及要使用的sim-link目标。

这是properties.txt文件中的文件数据示例:

  

FileLocation:" Z:\ Folder \ file.txt"

     

FileMkdirLocation:" Z:\ Folder2 \ file.txt"

我希望通过更改system(mkdir "sim-link_file_location" "file_location")中的数据来使用properties.txt之类的内容。我希望能够添加多个文件,而无需重新编译程序并逐个为每个文件编写每个命令。

问题是我不知道如何让命令使用文件中的数据。

编辑:我设法找到了一种方法,但在编译程序时遇到错误。我使用这段代码:

#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>

using namespace std;

//initialization of Properties File used
ifstream PropertiesFile ("PropertiesFile.txt");

int main()
{
    //initialization of variables used
    int input_option;
    char FileLocation[256], Command[]="mklink ";
//  string FileLocation, Command;

    PropertiesFile >> FileLocation;

/*  switch (input_option)
    {
    case "add all mods": 
    }
*/

    cout << "FileLocation: " << FileLocation;
    cout << endl;

    strcat(Command, FileLocation);
    Command[strlen(FileLocation)] = '\0';

    cout << Command;
    cout << endl;

    //system(command);

    system("pause");
    return 0;
}

我知道我还没有使用过所有变量。 它告诉我&#34; strcat&#34;已被弃用并使用&#34; strcat_s&#34;相反,当我用它替换它时,我得到了

  

&#34;调试断言失败 - 表达式:(L&#34;缓冲区太小&#34;&amp;&amp; 0)&#34;

2 个答案:

答案 0 :(得分:0)

我必须使“Command”字符大于“FileLocation”,因为然后strcat_s将无法复制内容。之后程序运行正常,没有其他Assert错误。

答案 1 :(得分:-2)

在linux中创建软链接的命令是:ln -s <source> <destination> 您可以在system("");调用中使用它,但在继续执行代码之前,您必须确保内核已完成执行此命令。

之后,您可以将链接读取为原始文件。