gpt4 book ai didi

c++ - 从另一个文件 C++ 中的文件名创建文件

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:37 25 4
gpt4 key购买 nike

我正在使用 C++ 对几个大文件进行排序。我有一个包含所有输入文件名称的文本文件,每行一个。我想一次读取一个文件名,将它们存储在一个数组中,然后用这些名称中的每一个创建一个文件。现在,我正在使用 fopen 和 fread,它们需要字符数组(我正在尝试优化速度),所以我的文件名被读入一个字符数组数组。然而,那些数组需要预先固定一个最大大小,所以如果文件名小于最大值,其余的都是垃圾。然后,当我尝试将该数组用作 fopen() 中的文件名时,它无法识别该文件,因为它在字符串末尾有垃圾。我怎么解决这个问题?这是我的代码:

 #include <iostream>
#include <fstream>
#include <string>
#include "stdafx.h"
#define NUM_INPUT_FILES 4

using namespace std;



FILE *fp;
unsigned char *buff;
FILE *inputFiles[NUM_INPUT_FILES];


int _tmain(int argc, _TCHAR* argv[])
{


buff = (unsigned char *) malloc(2048);
char j[8];
char outputstring[] = "Feelings are not supposed to be logical. Dangerous is the man who has rationalized his emotions. (David Borenstein)";

fp = fopen("hello.txt", "r");

string tempfname[NUM_INPUT_FILES];
//fp = fopen("hello.txt", "r");
for(int i=0;i<NUM_INPUT_FILES;i++)
{
fgets(tempfname[i], 20, fp);
cout << tempfname[i];
}
fclose(fp);

for(int i=0; i<NUM_INPUT_FILES;i++)
{
fp = fopen(tempfname[i], "w");
//fwrite(outputstring, sizeof(char), sizeof outputstring/sizeof(char), fp);
if(fp)
{
fclose(fp);}
else
cout << "sorry" << endl;
}


return 0;
}

此外,如何找到缓冲区的大小以使用 fwrite() 将其写出?

非常感谢,背景

最佳答案

正如 Don Knuth 所说,过早优化是万恶之源。

您的文件名绝对不是瓶颈!只需为它们使用 std::string

您需要将 fp = fopen(tempfname[i], "w"); 替换为 fp = fopen(tempfname[i].c_str(), "w"); 但是。

关于c++ - 从另一个文件 C++ 中的文件名创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2366739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com