帮忙看下 读取出来的文字全部乱码 数字正常
void readFile(char*** p, int* line)
{
int totallines = 0;
char buf[1024] = { 0 };
FILE* fp = fopen("C:\\Users\\Desktop\\123.txt", "r");
if (fp == NULL)
{
return -1;
}
while (fgets(buf,1024,fp))
{
totallines++;
}
printf("%d", totallines);
//设置指针在文件第一个位置
fseek(fp, 0, SEEK_SET);
char** tmp = (char**)malloc(sizeof(char*) * totallines);
for (int i = 0; i < totallines ; i++)
{
memset(buf, 0, 1024);
fgets(buf, 1024, fp);
tmp[i] = (char*)malloc(strlen(buf) + 1);
memset(tmp[i], 0, strlen(buf) + 1);
strcpy(tmp[i], buf);
}
*p = tmp;
*line = totallines;
fclose(fp);
}
void test() {
char** p = NULL;
int lines = 0;
readFile(&p, &lines);
for (int i = 0; i < lines; i++) {
printf("%s", p[i]);
free(p[i]);
p[i] = NULL;
}
//释放文件内容
free(p);
}
int main()
{
test();
}
你是在windows下测试的吧,windows默认gbk编码,所以导致c语言打开文件默认是以gbk的形式打开的,估计你的文件是用utf8保存的,所以导致了乱码,随便用文本工具转成gbk格式即可,还有你的readFile函数返回值声明成void咋还return -1,这啥操作我没懂。
乱码肯定是编码不对。
不过我记得Windows的默认编码并不一定是gbk。而是一个叫ansi的东西,这个东西是随着系统的语言有不同的。。。
@顾晓北: ansi太老了,只支持英文和数字,国内的windows环境默认就是gbk
-1那写错了 解决了谢谢