首页 > 解决方案 > 如何将文件中的每个字符加倍?

问题描述

#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define FILE_READ "prive.txt"

int main() {
  FILE * filp;
  int count = 1;
  char c;
  filp = fopen(FILE_READ, "r");

  if (filp == NULL)
      printf("file not found\n");

  while((c = fgetc(filp)) != EOF) {
    for (int i = 0; i < strlen(c); i++){
      strncpy()
    }
  }
  printf("worrds = %s\n", c);
  return 0;
}

如何将文件中的每个字符加倍?

例子:

再举一个例子:

标签: c++

解决方案


使用std::ifstreamstd::ofstream打开输入和输出文件缓冲区。用于std::istream::get检索每个char文件,然后将其两次输出到您的FILE_WRITE.

#include <iostream>
#include <fstream>

#define FILE_READ "./prive.txt"
#define FILE_WRITE "./output.txt"

int main()
{
    char c;

    std::ifstream i(FILE_READ);
    std::ofstream o(FILE_WRITE);

    while (i.get(c)) 
        o << c << c;      

    i.close();
    o.close();

    return 0;

}

既然你问过,如果你不想使用fstream,你可以选择下面的解决方案,它将输入和输出文件添加到带有 的缓冲区中fopen(),并通过fgetc()将每个char文本文件存储在c变量中。然后,通过fprintf()将 char 添加到输出文件中两次。

#include <iostream>

#define FILE_READ "./prive.txt"
#define FILE_WRITE "./output.txt"

int main()
{
    FILE* input = fopen(FILE_READ, "r");
    FILE* output = fopen(FILE_WRITE, "w");
    signed char c;

    while ((c = fgetc(input)) != EOF) {
        fprintf(output, "%c%c", c, c);
    }
    
    fclose(input);
    fclose(output);

    return 0;
}

推荐阅读