首页 > 解决方案 > 使用C将二维数组导出到新文件中

问题描述

我一直在处理一项任务,该任务要求我将包含名称列表的文件读入二维数组,然后将该数组写入新文件。我能够将文件读入一个数组,并且能够创建一个新文件并导出名称,但不幸的是,它没有将名称写入新行,而只是将名称相互覆盖。

例如,我在 names.txt 中有以下名称:

肖恩乔史蒂夫塔卡凯西

但是,在新文件中只显示 Kathy。我将如何确保数组中的每个名称都是数组打印在新行上?

这是我到目前为止的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
    FILE* fp;
    FILE* fp2;
    char nameArray[20][120], str[100];
    int i = 0, j = 0;
    char name[20];

    printf("Please enter a file name: ");
    scanf("%s", &name);

    fp = fopen(name, "r");


    while (fscanf(fp, "%s", str) != EOF)
    {
        strcpy(nameArray[i], str);
        i++;
    }

    for (i = 0; i < 5; i++)
    {
        fp2 = fopen("newNames.txt", "wb");
        fwrite(nameArray[i], sizeof(char), 5, fp2);
    }
    size_t n;
    for (n = 0; n < 5; n++) {
        printf("%s\n", nameArray[n]);
    }
    fclose(fp);
}

标签: arraysc

解决方案


您正在 for 循环内重新打开文件(甚至没有关闭它)...移动该行:

fp2 = fopen("newNames.txt", "wb");
for (i = 0; i < 5; i++)
{        
   fwrite(nameArray[i], sizeof(char), 5, fp2);
}

完成后不要忘记关闭它:fclose(fp2);


推荐阅读