使用 getc() 和 putc() 在 C 中复制文件文本 - 输出文件中的二进制代码
Copying file text in C using getc() and putc() - binary code in the output file
我创建了一个名为 "text.txt" 的文件,其中包含一个字符串,我想将该字符串复制到另一个名为 "copiaqui.txt" 的文件中。但是有一个问题。在输出文件中,我发现了这个:
为什么程序没有正确复制字符串?
代码:
#include <stdio.h>
#include <stdlib.h>
void copiaFile(FILE *fi, FILE *fo);
int main(void)
{
FILE *fi = fopen("test.txt", "r");
FILE *fo = fopen("copiaqui.txt","w");
if (fi == NULL)
{
printf("\nImpossibile aprire il file test.txt\n");
exit(EXIT_FAILURE);
}
if (fo == NULL)
{
printf("\nImpossibile aprire il file copiaqui.txt\n");
exit(EXIT_FAILURE);
}
copiaFile(fi, fo);
fclose(fi);
fclose(fo);
return 0;
}
void copiaFile(FILE *fi, FILE *fo)
{
int var;
while((var = getc(fi) != EOF))
{
printf("\nCarattere acquisisto : %c", var);
putc(var, fo);
}
}
你在这个表达式中犯了一个常见错误:
var = getc(fi) != EOF
这样做是将 (getc(fi) != EOF)
的值分配给 var
,因为所谓的运算符优先级。该值为 true 或 false。您打算做的是:
(var = getc(fi)) != EOF
这将使 var
具有 getc()
值,然后对照 EOF
.
进行检查
我创建了一个名为 "text.txt" 的文件,其中包含一个字符串,我想将该字符串复制到另一个名为 "copiaqui.txt" 的文件中。但是有一个问题。在输出文件中,我发现了这个:
为什么程序没有正确复制字符串?
代码:
#include <stdio.h>
#include <stdlib.h>
void copiaFile(FILE *fi, FILE *fo);
int main(void)
{
FILE *fi = fopen("test.txt", "r");
FILE *fo = fopen("copiaqui.txt","w");
if (fi == NULL)
{
printf("\nImpossibile aprire il file test.txt\n");
exit(EXIT_FAILURE);
}
if (fo == NULL)
{
printf("\nImpossibile aprire il file copiaqui.txt\n");
exit(EXIT_FAILURE);
}
copiaFile(fi, fo);
fclose(fi);
fclose(fo);
return 0;
}
void copiaFile(FILE *fi, FILE *fo)
{
int var;
while((var = getc(fi) != EOF))
{
printf("\nCarattere acquisisto : %c", var);
putc(var, fo);
}
}
你在这个表达式中犯了一个常见错误:
var = getc(fi) != EOF
这样做是将 (getc(fi) != EOF)
的值分配给 var
,因为所谓的运算符优先级。该值为 true 或 false。您打算做的是:
(var = getc(fi)) != EOF
这将使 var
具有 getc()
值,然后对照 EOF
.