发布网友 发布时间:2022-04-21 07:44
共3个回答
热心网友 时间:2022-06-18 18:54
可以使用输入输出重定向来将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--]);
}
}
热心网友 时间:2022-06-18 18:55
个人感觉比推荐的答案更符合要求,只是把东西都写在通过文件里,如果你要把数字转换成数据,这个可以自己转,希望可以帮到忙。
#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);
}
热心网友 时间:2022-06-18 18:55
用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);
}
}
}
}