c语言|从txt文档读取信息出现乱码|vs2010

为什么我从txt文件中读取信息会出现这样的乱码,之前完全照着书上的代码运行也会出现乱码(那张只有一行乱码的图片)

img

img

img


这是我的一段自定义函数,放在main函数中可以初步运行,但是会出现乱码,如上面选择orange释义的那一张图
谢谢了!qwq


void xuanzeti(char *fname,int i)
{
 int a,b,c,z=0,t,character,j,random;
 char temp[MEANINIG_len];
 FILE *fp;
 Word choice[4];//三个错误选项和一个正确选项
 char userschoice[MEANINIG_len];
 fp=fopen(fname,"r");//读取所有单词
 if(fp==0)
   {printf("source error\n");
    exit(0);
    }
 fscanf(fp,"%s%s",words[z].spelling,words[z].meanning);
 while(!feof(fp))
 {
  z++;
  fscanf(fp,"%s%s",words[z].spelling,words[z].meanning);
 }
 
//产生随机数、选出三个错误选项
 srand((unsigned int) time(0));
 for(j=0,z=0;j<1000&&z<3;j++) 
   {random=rand()%10;
    if(random<=number&&random!=i)
     {strcpy(choice[z].meanning,words[random].meanning);
      z++;
      }
    }
 strcpy(choice[3].meanning,words[number].meanning);
 //打乱选项
 for(a=0;a<4-1;a++)
 {c=1;
  for(b=a+1;b<4;b++)
     if(strcmp(choice[c].meanning,choice[b].meanning)>0)
     c=b;
  if(c!=a)
  {strcpy(temp,choice[a].meanning);
  strcpy(choice[a].meanning,choice[c].meanning);
  strcpy(choice[c].meanning,temp);
  }
 }
 //选择界面
 printf("请选择%s的正确释义\n",words[i].spelling);
 printf("1.%s\n",choice[0].meanning);
 printf("2.%s\n",choice[1].meanning);
 printf("3.%s\n",choice[2].meanning);
 printf("4.%s\n",choice[3].meanning);
 scanf("%d",&character);
 strcpy(userschoice,choice[character].meanning);
 t=strcmp(userschoice,words[i].meanning);
 if(!t)
 {printf("回答正确!");
  words[i].displaytimes_right++;
 }
 else
 {printf("回答错误,正确答案为%s\n",words[i].meanning);
  words[i].displaytimes_wrong++;
 }
}

在从txt文件中读取信息时出现乱码的原因可能有以下几种情况:

文件编码不一致:如果txt文件保存时使用了一种编码,而读取时使用了不同的编码方式,就会导致乱码。例如,文件保存时使用UTF-8编码,但读取时使用了GBK编码,就会出现乱码。确保文件保存和读取时使用相同的编码方式,可以避免这个问题。

文件内容包含非ASCII字符:如果txt文件中包含了非ASCII字符(如中文、日文、韩文等),而读取时没有正确处理这些字符,就会导致乱码。在读取文件时,可以使用适当的字符编码方式(如UTF-8、GBK等)来处理非ASCII字符,以避免乱码问题。

缓冲区大小不足:在读取文件时,如果使用了固定大小的缓冲区,并且文件内容超过了缓冲区的大小,就会导致乱码。确保缓冲区大小足够大,可以避免这个问题。

文件本身损坏或格式错误:如果txt文件本身损坏或格式错误,读取时可能会出现乱码。可以检查文件是否完整并符合预期的格式。

代码中处理字符的方式不正确:在代码中处理字符时,如字符串的读取、拷贝、比较等操作,如果使用了不正确的方式,也可能导致乱码。确保代码中对字符的处理方式正确,包括使用正确的字符编码方式和避免溢出等情况。

在你提供的代码中,没有看到具体的文件读取操作,无法确定具体的乱码原因。建议在文件读取操作中,使用正确的字符编码方式,并对非ASCII字符进行正确的处理,以避免乱码问题的发生。同时,检查文件是否完整并符合预期的格式,以及代码中对字符的处理方式是否正确。如有需要,可以在代码中添加字符编码转换的操作,以确保文件内容在读取时能够正确解析。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^