C语言读取txt文件 文字部分乱码
帮忙看下 读取出来的文字全部乱码 数字正常
define _CRT_SECURE_NO_WARNINGS
include<stdio.h>
include<stdlib.h>
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,这啥操作我没懂。
以上是 C语言读取txt文件 文字部分乱码 的全部内容, 来源链接: utcz.com/a/38939.html