c - 如何使用 C 中的 strdup 函数动态分配内存以读取 .txt 文件
问题描述
我有一个在 C 中动态分配和读取 .txt 文件的功能。但是根据我的分配说明,文件的读取应该使用 strdup 而不是 malloc 来处理动态内存分配。我曾尝试修改 strdup 函数以使其正常工作,但我还没有成功。这是使用 malloc 的当前工作代码。(注意:对于我的项目,我正在阅读 2 个 .txt 文件,因此为什么主要有两个文件。这样做是为了避免任何混淆。)
编辑 1:使用 #include sys/stat.h 作为 stat 结构
编辑 2:由于有很多人问,我需要使用 strdup 进行动态内存分配。我不会显示说明,但它是明确要求的。
//Function that reads .txt input files
char* readInputFile(FILE* targetFile, struct stat stringBuffer)
{
char *tempString=malloc(stringBuffer.st_size+1);
fread(tempString, 1, stringBuffer.st_size, targetFile);
tempString[stringBuffer.st_size] = '\0';
fclose(targetFile);
return tempString;
}
int main(int argc, char *argv[])
{
struct stat stringBuffer1;
struct stat stringBuffer2;
stat(argv[1], &stringBuffer1);
stat(argv[2], &stringBuffer2);
FILE *wordListFile1 = NULL, *wordListFile2 = NULL, *outputFile = NULL;
wordListFile1=fopen(argv[1], "r");
wordListFile2=fopen(argv[2], "r");
char* fileString1;
char* fileString2;
fileString1 = readInputFile(wordListFile1,stringBuffer1);
fileString2 = readInputFile(wordListFile2,stringBuffer2);
...
}
解决方案
推荐阅读
- webpack - webpack-dev-server 端口自动分配
- entity-framework-core - 引入 FOREIGN KEY 约束 - 基本迁移
- c# - 未找到 Elasticsearch NEST Suggester 解析器
- sql - 获取帐户的查询与日期范围不冲突
- android - 为什么我会看到 Android 模拟器应用程序运行错误?
- html - 列不在较小的屏幕中
- java - 如何在 swift 中使用 aes256 cbc 加密?
- node.js - mongodb中的多个连接是否可以进行一项事务?
- gluon-mobile - 哪个大小的 fxml gui 是正确的?
- apache-kafka - 使用 GlobalKtables 加入 KStream 时出现 InvalidStateStoreException