c语言 如何读取中文字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 如何读取中文字符串相关的知识,希望对你有一定的参考价值。
如何从已有的文件中读取结构体数据,加入我已有一个文本文档
E:a.txt
张三 23
李四 30
我想要查找张三,并使用他的23这个数据。求达人指点。。
先使用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文件中的字符串存入字符数组?这个 .txt 文件是从命令行参数 btw 中读取的。