程序目的 把一个磁盘文件中的内容复制到另一个磁盘文件中
程序正常运行了,但是不知道为什么file_1文本中的hello world复制到file_2中就变成了?,希望有人解答一下要怎么改才能实现复制。
#include'
#include'
void main()
{
FILE* fp, * fq;
errno_t error_1, error_2;
if ((error_1 = fopen_s(&fp, "C:\\file_1.txt", "wt+"))!=NULL){
printf("cannot open file");
getchar();
exit(1);
}
if ((error_2 = fopen_s(&fq, "C:\\file_2.txt", "wt+")) != NULL){
printf("cannot open file");
getchar();
exit(1);
}
int i,j;
char a[100],ch;
for (i = 0,j=1; feof(fp) != 1; i++,j++) {//将file_1中的字符存到字符数组中
a[i] = fgetc(fp);
}
for (i = 0; i < j; i++) {//把字符数组的内容写入file_2
ch = a[i];
fputc(ch, fq);
}
rewind(fq);
while (feof(fq)!=1)//输出file_2中的内容
{
ch = fgetc(fq);
putchar(ch);
}
fclose(fq); fclose(fp);
}
应该因为读取那里出错了,然后c盘读取和写入文件运行程序可能需要管理员权限才能正常运行;
我在dev-c++使用fopen()测试的代码,读取file_1文件的模式改为了只读模式,写入file_2文件改为了只写模式,然后读取写入的地方修改了一下,然后在cmd以管理员模式打开来运行程序的,修改后程序正常运行,修改如下:
参考链接:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE* fp, * fq;
// errno_t error_1, error_2;
if (( fp=fopen( "C:\\file_1.txt", "r"))==NULL){
printf("cannot open file");
getchar();
exit(1);
}
if ((fq=fopen("C:\\file_2.txt", "w")) == NULL){
printf("cannot open file");
getchar();
exit(1);
}
int i,j;
char a[100],ch;
for (i = 0,j=1; feof(fp) == 0; i++,j++) {//将file_1中的字符存到字符数组中
a[i] = fgetc(fp);
// printf("read,a[%d]=%c\n",i,a[i]);
}
//printf("i=%d\n",i);
for (j = 0; j < i; j++) {//把字符数组的内容写入file_2
ch = a[j];
//printf("write,a[%d]=%c\n",j,a[j]);
fputc(ch, fq);
}
// rewind(fq);
fclose(fp);
fclose(fq); //写入文件后,关闭文件保存文件数据
// 再次打开文件读取数据
if ((fq=fopen("C:\\file_2.txt", "r")) == NULL){
printf("cannot open file");
getchar();
exit(1);
}
while (feof(fq)==0)//输出file_2中的内容
{
ch = fgetc(fq);
putchar(ch);
}
fclose(fq);
}
fopen_s(&fp, "C:\file_1.txt", "wt+")
改为
fopen_s(&fp, "C:\file_1.txt", "r")
读文件不要传入写参数
这个是编码问题,改一下编码。