【发布时间】:2019-09-16 18:36:28
【问题描述】:
这是我目前写的代码
#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 变量中复制多个文件的数据的部分
谢谢
【问题讨论】:
-
一些观察,1)
FILE **originalfilearray;没有为其分配内存,也许它应该是FILE *originalfilearray[14];尽管structs 的数组通常比单独的数组更好。 2)char c应该是int c。 3)char quit[4] = "exit"(您不使用)缺少字符串终止符。 4)c = fgetc(fptr2);不正确 - 那是您正在写入的文件。 -
...因为您首先尝试从输出文件中读取,所以循环
while (c != EOF)将永远不会迭代。 -
您能否提及我应该为读取输入文件并将其粘贴到输出文件中所做的更改?