c语言读取txt中的中文
时间: 2024-05-07 15:23:03 浏览: 116
C语言读取txt文本信息
在 C 语言中,读取文本文件中的中文字符需要注意文件编码问题。如果文件是 UTF-8 编码,可以使用标准库函数 fgets() 或 fgetc() 读取文件内容。如果文件是 GBK 编码,则需要使用第三方库进行转码。
以下是使用 fgets() 函数读取 UTF-8 编码文件的示例代码:
```c
#include <stdio.h>
int main() {
FILE *fp = fopen("file.txt", "r");
char buf[1024];
if (fp == NULL) {
printf("Failed to open file\n");
return 1;
}
while (fgets(buf, sizeof(buf), fp) != NULL) {
printf("%s", buf);
}
fclose(fp);
return 0;
}
```
如果文件是 GBK 编码,可以使用第三方库如 iconv 或 libiconv 进行转码。以下是使用 iconv 进行 GBK 转 UTF-8 的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iconv.h>
#define BUFFER_SIZE 1024
int main() {
FILE *fp = fopen("file.txt", "r");
char inbuf[BUFFER_SIZE], outbuf[BUFFER_SIZE];
size_t inbytesleft, outbytesleft;
iconv_t conv;
if (fp == NULL) {
printf("Failed to open file\n");
return 1;
}
conv = iconv_open("UTF-8", "GBK");
while (fgets(inbuf, sizeof(inbuf), fp) != NULL) {
inbytesleft = strlen(inbuf);
outbytesleft = BUFFER_SIZE;
iconv(conv, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
printf("%s", outbuf);
}
iconv_close(conv);
fclose(fp);
return 0;
}
```
阅读全文