c - 如何使用C中的文件指针数组将数据写入多个文件?
问题描述
这是我到目前为止写的代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h> // For exit()
int main()
{
FILE *fptr1, *fptr2;
char filename[100], c;
char quit[4] = "exit";
// char *filearray[100];
char filearray[100][14];
FILE **originalfilearray;
int counter = 0;
//Copy part
while(1){
printf("Enter the filename to open for reading \n");
scanf("%s", filename);
fptr1 = fopen(filename, "r");
if (fptr1 == NULL)
{
break;
printf("Cannot open file %s \n", filename);
exit(0);
}
strcpy(filearray[counter], filename);
originalfilearray[counter] = fptr1;
counter+=1;
}
//Paste part
for (int i = 0; i < counter; i++)
{
printf("Enter the filename to open for writing for file %s\n", filearray[i]);
scanf("%s", filename);
fptr2 = fopen(filename, "w");
// Read contents from file
c = fgetc(fptr2);
while (c != EOF)
{
fputc(c, fptr2);
c = fgetc(originalfilearray[i]);
}
printf("\nContents copied to %s\n", filename);
}
}
当我运行创建文件但未粘贴任何内容的粘贴代码时,会出现问题。
我已经尝试阅读许多关于文件指针数组的文章。有些人建议使用单指针创建 originalfilearray 变量,有些则使用双指针。
我想主要的问题是复制部分。
有人可以帮我解决我需要在 originalfilearray 变量中复制多个文件的数据的部分吗
谢谢你
解决方案
除了没有为 originalfilearray 分配内存,其他用户解释过,这里有一些你做错的事情
在
c = fgetc(fptr2);
您正在尝试从刚刚打开的空文件中获取字符
fptr2 = fopen(filename, "w");
你应该做的是启动一个文件指针fptr
并打开
FILE *fptr=fopen(filearray[i], "r");
然后将内容复制到其中
while ((c = fgetc(fptr))!= EOF)
{
fputc(c, fptr2);
}
推荐阅读
- c# - 如何等待在 UWP 应用中触发 EventHandler?
- asynchronous - 在 protobuffers 上使用特征和异步函数的生命周期错误
- plot - 如何在 Scilab 中绘制曲线?
- flutter - Flutter 访问底部 Navigation 父级的上下文
- python - 具有随机变量的幂函数
- html - Bootstrap 下拉菜单出现在悬停...不点击
- installation - 我无法在 MacOS High Sierra 中安装 Quantum Espresso
- ios - 禁用粘贴菜单 iOS
- javascript - 控制 Google Drive 中的文件上传位置(应用脚本不是表单)
- php - 如何将 storeUrl 传递给默认的 Magento oauth 脚本?