在char数组中插入Integer以在重命名函数中使用它

时间:2016-08-30 17:14:44

标签: c++ c

很久以前,因为我试图编码......但我正在寻找一种简单的方法来迭代一些文件夹来重命名包含文件。

我的文件夹看起来像'MORE0001','MORE0002'等。它们包含所有同名文件'Data'

我想要做的是将所有包含的文件重命名为'data.dat'(并且可能找到一种从文件夹中提取文件的方法..)

所以这就是它的样子:

   for (int i=0; i<10;i++){

   char oldname[]= "directory/MORE0001/data";
   char newname[]= "directory/MORE0001/data.dat";

   rename(oldname,newname);

   }

这很好用,但我想将for循环中的0001更改为0002等。

希望你们能帮助我..我还没有找到这个简单问题的答案

4 个答案:

答案 0 :(得分:2)

如果要使用C解决它,可以使用以下语句生成字符串(应该先使用char oldname [100]之类的方式声明):

instance2.hashCode()

与newname相同。

答案 1 :(得分:1)

其他答案向您展示了如何在C中使用(?<=_)[A-Za-z-]*,但您也将问题标记为。在C ++中,您应该使用sprintf()代替,例如:

std::ostringstream

也就是说,您应该考虑删除基于整数的循环,并实际枚举根#include <string> #include <sstream> #include <iomanip> #include <cstdio> for (int i = 0; i < 10; ++i) { std::ostringstream oss; oss << "directory/MORE" << std::setw(4) << std::setfill('0') << i << "/data"; std::string oldname = oss.str(); std::string newname = oldname + ".dat"; std::rename(oldname.c_str(), newname.c_str()); } 的内容以动态发现其子文件夹。您可以使用类似boost::filesystem的内容(也有自己的rename()功能),甚至可以使用特定于平台的API(例如FindFirstFile() / FindNextFile()和{{ 3)}在Windows上。)

答案 2 :(得分:0)

使用SELECT w.worker_id, w.department, [ complicated equation using location, destination, departure and arrival time] AS mph FROM workers w CROSS JOIN ( SELECT department, [ complicated equation using location, destination, departure and arrival time (by workers) ] AS mph1, [ complicated equation using location, destination, departure and arrival time (by w3) ] AS mph3 FROM workers JOIN workers w3 ON w3.worker_id <> workers.worker_id AND w3.department = workers.department HAVING mph1 < 500 AND mph3 < 500 ORDER BY mph1 LIMIT 1 ) w2 WHERE w.department = w2.department HAVING mph < 500 ORDER BY mph LIMIT 2 格式化打印到缓冲区,您可以将其传递到sprintf函数。

rename中,您可以在for循环中使用sprintf作为%04d的格式说明符,这将在您的号码后打印前导零,最多4位数。

答案 3 :(得分:0)

使用sprintf

char oldname[100];
char newname[100];
sprintf(oldname, "directory/MORE%04d/data", i);
sprintf(newname, "directory/MORE%04d/data.dat", i);

100应足够大以容纳路径名。如果它太短,您的程序将崩溃或(更糟糕的是)将您的文件重命名为无法使用的名称。