c语言 如何读取中文字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 如何读取中文字符串相关的知识,希望对你有一定的参考价值。

如何从已有的文件中读取结构体数据,加入我已有一个文本文档
E:a.txt
张三 23
李四 30
我想要查找张三,并使用他的23这个数据。求达人指点。。

可以使用输入输出重定向来将TXT文本中的字符内容导入程序中,或者使用标准C库函数:fopen()和fgetc();
先使用fopen()函数打开TXT文本文件,然后使用fgetc读取文本文件中的字符。读取全部文本中全部字符可以使用一个while循环加判断是否读取到文件结尾来实现:
char ch;
while((ch= fgetc(fp)) != EOF)

这样当读取到文件结尾时,while循环就会终止。
C语文编写编译如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLINE 100000
#define BUFLEN 1024
int main()

FILE *file;
char buf[BUFLEN];
int len=0,i=0;
char *array[MAXLINE];

file=fopen("test.txt","r");//打开TXST.TxT文件
if(!file)return -1;
while(fgets(buf,BUFLEN,file))//读取TXT中字符

len=strlen(buf);
array[i]=(char*)malloc(len+1);
if(!array[i])break;
strcpy(array[i++],buf);


fclose(file);
i--;
while(i>=0&&array[i])

printf("%s\n",array[i]);//打印test文档的字符
free(array[i--]);

参考技术A 个人感觉比推荐的答案更符合要求,只是把东西都写在通过文件里,如果你要把数字转换成数据,这个可以自己转,希望可以帮到忙。
#include<stdio.h>
#include <string.h>
void main()

FILE * fp;
fp = fopen("E:\\1.txt","r+t");
if(fp == NULL)

printf("can not open the file\n");
return ;

char str[50];
char name[50];
printf("输入名字:");
scanf("%s",name);
while(1)

if(EOF == fscanf(fp,"%s",str))

printf("没有你要找的人...");
break;

if(strcmp(name,str) == 0)

fscanf(fp,"%s",str);
break;


printf("你要的号码为%s\n",str);
参考技术B 用fscanf函数按格式读取到结构体中,用strcmp比较字符是否相同,做查询,找到记住行数读取后面的字段的参数。
以下是我以前作业中有关你这个的截取:
读取:
void read(void)

FILE *cj;
int i,k;
man=0;
while(1)

printf("请输入要读取的文件:\n");
scanf("%s",&str);
if((cj=fopen(str,"r"))==NULL)

printf("打开失败\n");

else

break;


for(i=0;i<500;i++)

if(fscanf(cj,"%s %s %d %d %d %d %d %d %d %d %d",&student[i].id,&student[i].name,&student[i].n1,&student[i].n2,&student[i].n3,&student[i].n4,&student[i].n5,&student[i].n6,&student[i].n7,&student[i].n8,&student[i].n9)==-1)

break;

man=man+1;

printf("从%s读取去了“%d”条记录\n",str,man);
for(k=0;k<man;k++)

student[k].zong=student[k].n1+student[k].n2+student[k].n3+student[k].n4+student[k].n5+student[k].n6+student[k].n7+student[k].n8+student[k].n9;

for(i=0;i<man;i++)

student[i].ping=student[i].zong/9;

fclose(cj);

查询:
void inquiry(void)

int i;
char id[10];
while(1)

printf("请输入要查人的学号或名字(输入-1即返回上一级):\n");
scanf("%s",&id);
if(id[0]=='-'&&id[1]=='1')

printf("exit\n");
break;

else

for(i=0;i<man;i++)

if(strcmp(student[i].id,id)==0)

j=i;
break;

if(strcmp(student[i].name,id)==0)

j=i;
break;


j=-1;


if(j==-1)

printf("无此人\n");

else

printf(" | 学号 姓名 1 2 3 4 5 6 7 8 9 总分 平均分 | \n");
printf(" | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n",student[j].id,student[j].name,student[j].n1,student[j].n2,student[j].n3,student[j].n4,student[j].n5,student[j].n6,student[j].n7,student[j].n8,student[j].n9,student[i].ping,student[i].zong);



以上是关于c语言 如何读取中文字符串的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何读取TXT全部字符?

C语言 读取中文

C语言求助:如何将.txt文件中的字符串存入字符数组?这个 .txt 文件是从命令行参数 btw 中读取的。

c语言 如何实现字符串由右向左读取且删除指定字符之前的所有字符?

c语言逐行读取文件?

如何读取CSV文件以及如何读取带有字符串数据项的CSV文件