在C++中如果一个文件中既有字符串又有整数,那么如何把这两种类型的数据分别读入并且存储在数组当中呢

在C++中如果一个文件中既有字符串又有整数,那么如何把这两种类型的数据分别读入并且存储在数组当中呢?最好把代码发给我,谢了,如果对的话一定采纳。... 在C++中如果一个文件中既有字符串又有整数,那么如何把这两种类型的数据分别读入并且存储在数组当中呢?最好把代码发给我,谢了,如果对的话一定采纳。 展开
 我来答
bignode
2014-11-25 · TA获得超过2664个赞
知道大有可为答主
回答量:1427
采纳率:75%
帮助的人:548万
展开全部

文件 中的内容是字符串,还是整数,实际是用户自己确定的。当编写一个程序读 一个文件时,必须知道文件 的结构,才能正确的解析文件的内容,如果不知道文件解构,读出来的只能是一堆没有用的垃圾数据。

比如,一个文件文件只有一行数据:

92 88

是什么意思?可能是代表了两门课成绩的整数;也有可能是某个学生学号及平均成绩;至于是什么,以数字还是字符串存储,就只能用户定了。

比如文件中存放了N行数据,每行为一个学生的姓名 及学生的成绩;N<100;姓名最多四字;则可以用以下方法进行读取:

#include <stdio.h>
int main()
{
    char students[100][9]; //存姓名
    int  score[100];       //存成绩
    int  n ; //记录读出多少人
    int  i;
    
    FILE* fp = fopen("data.txt","r");//文件
    if( fp == 0 )
    {
        printf("文件打开失败。");
        return 0;
    }
    n = 0;
    while( !feof(fp))
    {
        fscanf( fp,"%s %d",students[n],&score[n]);
        n++;
    }
    
    fclose(fp);
    printf("共读出%d条记录:\n",n);
    for( i = 0;i< n;i++)
        printf("第%d条  姓名:%s  成绩%d\n",students[i],&score[i]);    
    
    getchar();
    return 1;
}
追问
哦,是这样,文件中第一行是一个整数,表示的是总人数,然后下面几行是名字和工作时间,其中有空格和回车,大概是这样的
3
Allan,James 5 8 8
Kobe,Brian 8 3 6
Bob,Dahk 4 5 3
追答
直接写的没验证,最后输出printf少了个i;
for( i = 0;i< n;i++)
printf("第%d条 姓名:%s 成绩%d\n",i+1, students[i],&score[i]);
匿名用户
2014-11-25
展开全部
这个需要定义两个数组 一个是int型 一个是char型
追问
应该是string型吧,因为是好多字母
应该是string型吧,因为是好多字母
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式