怎么读取文本文件中的数据

ljm19891118 2009-12-01 10:32:02
下面的代码我是用手输入的姓名和性别
我想实现以下功能
有文本文件shuju.txt里面内容是
lijimeng nan
wangxuan nv
mashangjian nan



怎么可以依次读取到程序里面
像把第一行的姓名赋值给a 性别赋值给b
赋值后
我把a和b的值存储在数组里面
然后在读取文本文件的第二行
再把姓名赋值给a 性别赋值给b
依次往下
直到文本文件里面内容读取完毕


寝室还有30分钟要没点了
等待30分钟...
11点后断电了
明天在看
谢谢了

#include<iostream.h>
#include<string.h>
void main()
{
char man[100][10],woman[100][10];
int i,j,k,m,flag;
char a[256],b[256]; //mark
i=j=0;
k=1;
cout<<"请输入舞会人的总数:";
cin>>flag;
for( m=0;m <100;m++)
{
strcpy(man[m],"null");
strcpy(woman[m],"null");
}

while(flag!=0)
{ cout<<"请输入舞会的姓名和性别:";
cin>>a>>b; //原来没给a和b分配内存,挂了……
while(strcmp(b,"nan")&&strcmp(b,"nv"))
{
cout<<"性别输入错误,请重新输入性别";
cin>>b;
}
if(!(strcmp(b,"nan")))
{
strcpy(man[i],a);
i++;
}
else if(!(strcmp(b,"nv")))
{
strcpy(woman[j],a);
j++;
}

flag--;

}
while(strcmp(man[k-1],"null")&&strcmp(woman[k-1],"null"))
{
cout<<"第"<<k<<"组舞伴,男: "<<man[k-1]<<" 女: "<<woman[k-1]<<endl;
k++;
}

}
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljm19891118 2009-12-02
  • 打赏
  • 举报
回复
怎么可以将一行分2个次读取
kostion 2009-12-02
  • 打赏
  • 举报
回复
用fgets每次读一行到缓冲区,在用sscanf格式化读取缓冲区,放入数组或结构中
至善者善之敌 2009-12-02
  • 打赏
  • 举报
回复
用C和C++均可
linuhuge 2009-12-02
  • 打赏
  • 举报
回复
用STL吧.


ifstream infile("yourfilename.txt");
std::vector<std::string> ivec;
copy(istream_iterator<std::string>(infile), istream_iterator<std::string>(), back_inserter(ivec));

sduxiaoxiang 2009-12-02
  • 打赏
  • 举报
回复
sscanf_s
honghu069 2009-12-02
  • 打赏
  • 举报
回复
moranhuishou10 2009-12-02
  • 打赏
  • 举报
回复
用什么语言呀
taohua300 2009-12-02
  • 打赏
  • 举报
回复
读取文件内容到数组

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define LENGTH 1024

typedef struct _Personal{
char cName[20];
int nSex;
}strPersonal,*ptrPersonal;

int main (void)
{
FILE *ifp;
char str[LENGTH];
strPersonal PeoNum[100];
char *pt;
int i,n,m;
int flag = 0;
char temp[20];

if ((ifp = fopen("shuju.txt","rb")) == NULL) // 取得 shuju.txt 文件指针
{
printf("Can't open file shuju.txt\n");
system("pause");
exit(1);
}
fgets(str,LENGTH,ifp); //开始读取 shuju.txt
m = 0;
while (!feof(ifp))
{
m++;
if ( m > 100) // 大于数组长度时,退出循环
break;
n = 0;
for (i = 0;i<strlen(str);i++)
{
if (str[i] == ' ')
break;
temp[n] = str[i];
temp[n + 1] = '\0';
n++;
}
pt = strstr(str," ");
if (strstr(pt + 1,"nan") != NULL)
flag = 1;
else
flag =0;
strcpy(PeoNum[m].cName,temp);
PeoNum[m].nSex = flag;

fgets(str,LENGTH,ifp);
}
for (i = 0;i < 100;i++) // 输出
printf("%s\t%d\n",PeoNum[i].cName,PeoNum[i].nSex);
fclose(ifp);
return 0;
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧