首页 > 解决方案 > 如何使用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 变量中复制多个文件的数据的部分吗

谢谢你

标签: carraysfilepointers

解决方案


除了没有为 originalfilearray 分配内存,其他用户解释过,这里有一些你做错的事情

c = fgetc(fptr2);

您正在尝试从刚刚打开的空文件中获取字符

fptr2 = fopen(filename, "w");

你应该做的是启动一个文件指针fptr并打开

FILE *fptr=fopen(filearray[i], "r");

然后将内容复制到其中

while ((c = fgetc(fptr))!= EOF)
        {
            fputc(c, fptr2);
        }

推荐阅读