zhangsijiu 发表于 2023-9-18 17:29:19

为啥复制过去之后是乱码

跟着小甲鱼视频敲的
8 #include<stdio.h>
9 #include<stdlib.h>
10
11 int main()
12 {
13   FILE *fp1;
14   FILE *fp2;
15
16   int ch;
17
18   if((fp1 = fopen("1.txt","r")) == NULL)
19   {
20         printf("打开文件失败\n");
21         exit(EXIT_FAILURE);
22   }
23
24   if((fp2 = fopen("3.txt","w"))==NULL)
25   {
26         printf("打开文件失败\n");
27         exit(EXIT_FAILURE);
28   }   
29
30   while((ch=fgetc(fp1)!= EOF))
31   {
32         fputc(ch,fp2);
33   }
34
35   fclose(fp1);
36   fclose(fp2);
37
38   return 0;
39 }

isdkz 发表于 2023-9-18 17:29:28

这段代码存在一个括号位置不正确的问题,导致程序逻辑出现错误。在while循环中,应该先将fgetc(fp1)的返回值与EOF进行比较,再将结果赋值给ch,因为!=的优先级比=低。修改后的代码如下:

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

int main()
{
    FILE *fp1;
    FILE *fp2;

    int ch;

    if((fp1 = fopen("1.txt","r")) == NULL)
    {
      printf("打开文件失败\n");
      exit(EXIT_FAILURE);
    }

    if((fp2 = fopen("3.txt","w"))==NULL)
    {
      printf("打开文件失败\n");
      exit(EXIT_FAILURE);
    }   

    while((ch=fgetc(fp1))!= EOF)
    {
      fputc(ch,fp2);
    }

    fclose(fp1);
    fclose(fp2);

    return 0;
}


另外,如果复制过去之后是乱码,可能是因为编码格式不同。可以尝试将源代码文件的编码格式改为UTF-8,再复制粘贴到其他地方。
页: [1]
查看完整版本: 为啥复制过去之后是乱码