c++ - 如何将文件中的每个字符加倍?
问题描述
#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;
}
如何将文件中的每个字符加倍?
例子:
- 之前:你好
- 之后:HHii
再举一个例子:
- 你好
- 赫尔洛
解决方案
使用std::ifstream
和std::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;
}
推荐阅读
- reactjs - 设置了 headers 和 axios 但是为什么会发生 cros 错误?
- javascript - 如何编写一个具有类名并在 javascript 中返回字符串数组的函数?
- javascript - 使用对象键中的日期对结果进行分组,并且只计算结果
- python - 如何使用 Python Selenium 独立运行 Explorer
- rust - 使用 wgpu-ris 和 winit 调整窗口大小“抖动”
- javascript - 即使正在捕获数据,jQuery AJAX 成功也不会触发
- python - 在列表列表中弹出项目的更清洁方法
- ansible - Vagrant up在安装ansible时返回403 Forbidden错误
- python - DatabaseError:类型字符变化的值太长(20)
- javascript - 共享主机上的虚拟目录中的 Wcf 服务