c语言如何按行读取txt中的中文字符

我现在的目标是:
用txt文档中读出一行以“,”为分隔符的信息,分别存入结构数组的子项里面,然后再输出。但是存入的过程我就发现不能识别中文。我网上搜到可以用getc,但是我也不知道怎么应用到我这个例子中。

例如txt文档中的内容是这个:
1-1-05,GMAT词汇精选,俞敏洪(编著),英语-词汇-研究生
1-2-01,人间失格,太宰治(著)高詹灿(译),自传体-小说-日本
2-3-15,photoshop CS5 从入门到精通,新视角文化行(编著),图形软件-photoshop
4-1-10,中外著名枪械鉴赏图鉴,李大光(编著),手枪-世界-普及读物
3-5-20,普通话水平测试实施纲要,国家语言文字工作委员会(编著),普通话-水平考试-自学

我的结构体是这样的:
typedef struct {
unsigned short int day;
char month[4];
unsigned short int year;
}date; /*构造以整数型年月日的"日期"型数据*/

typedef struct{
char number[6];/*索书号*/
char bookname[30];/*书名*/
char author[40];/*作者及译者*/
char keyword[40];/*关键字*/
}book;

static book data[200];

请问我如何才能把他们正确地存到数组data里呢?

//若使用一维数组使用以下程序
#include <stdio.h>
main()
{
char s1[20] = {0};
char s2[20] = {0};
char s3[20] = {0};
int i=0;
FILE *fp;
fp = fopen("1.txt","r");
fscanf(fp,"%s",s1);
fscanf(fp,"%s",s2);
fscanf(fp,"%s",s3);
printf("%s\n%s\n%s\n",s1,s2,s3);

}

//若用二维数组使用如下程序
#include <stdio.h>
main()
{
char s[10][20] = {0};
int i=0;
FILE *fp;
fp = fopen("1.txt","r");
for(i=0;i<3;i++)
{
fscanf(fp,"%s",s[i]);
printf("%s\n",s[i]);
}
}追问

中文怎嚒用fscanf读 读出来都是乱码

温馨提示:答案为网友推荐,仅供参考
相似回答