设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1589|回复: 8
打印 上一主题 下一主题

求助:c++与记事本交换数据

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 00:09:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
记事本中的数据为,即3行4列的矩阵:
0.101,2.304,3.555,1.183,
-1.347,3.712,4.623,2.137,
-2.835,1.072,5.643,3.035;
如何将其读到C++中的C[3][4]的矩阵中?
说明:C是在主函数中定义的变量!
2#
发表于 2009-11-4 00:09:06 | 只看该作者
我以前写过..你自己用指针操作
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 00:09:07 | 只看该作者
#include "iostream.h"
#include "fstream.h"
#include "iomanip.h"
#include "stdio.h"

void main(){
    double *p,c[3][4];
    int i,j;
    p=c[0];
    ifstream aa;
    aa.open("D:\\test.txt",ios::in);//将数据用记事本保存,放在d盘.文件名为test.txt
    if(!aa)
    {
        cout <<"test.txt不能打开!\n";
        aa.close();
    }
    while(!aa.eof())
    {   
        aa>>*p;
        p++;
       }
    aa.close();
    for(i=0;i<3;i++)
        for( j=0;j<4;j++)
        {   
            cout<<"c["<<i<<"]["<<j<<"]="<<c[i][j]<<setprecision(4)<<setw(8);
            if(j==3)
                cout<<endl;
        }
        getchar();
}
我用指针做了一下。现将代码贴上去,供大家参考!
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 00:09:08 | 只看该作者
能实现吗?p向后动了,aa貌似一直都没有动过。
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 00:09:10 | 只看该作者
#include<stdio.h>
#include<math.h>
#include<string>
using namespace std;
void main()
{
    double x[420]={0};
    string s;
FILE *fp;
fp=fopen("eight.gjc","r");
int i=0;
char ch;
ch=fgetc(fp);
while(ch!=EOF)
{
    if((ch>='0'&&ch<='9')||ch=='.'||ch=='-')
    {
        s=s+ch;
        
    }
    else if(!(ch>='0'&&ch<='9'||ch=='.'||ch=='-')&&s!="\0")
    {
        int n=s.find(".",0);
        int f=0;
        float d=0;
        const char *p=s.c_str();
              for(int k=0;k<s.length();k++)
            {
                if(p[k]=='-') continue;
               if(p[k]!='.'&&p[k]!=' '&&f==0)
               {
                   d=d+(p[k]-'0')*pow(10,n-k-1);
                  
               }
                if(f==1&&p[k]!='.'&&p[k]!=' ')
               {
                       d=d+(p[k]-'0')*pow(10,n-k);
               }
                if(p[k]=='.') f=1;

            }
      if(p[0]=='-')
       x[i++]=-1*d;
      else
       x[i++]=d;
       s="\0";
    }
    ch=fgetc(fp);
}
for(int j=0;j<i;j++)
{
    if(j!=0&&j%3==0)
    printf("\n");
    printf("%f\t",x[j]);
  
}
}
以前写的..没怎么改
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 00:09:11 | 只看该作者
学习中啦
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-4 00:09:12 | 只看该作者
简单方案,快又直接。经过测试


#include <iostream.h>
#include <fstream.h>

//假设你的数据都存在data.txt里面而且格式如下

//data.txt
//
//0.101,2.304,3.555,1.183,
//-1.347,3.712,4.623,2.137,
//-2.835,1.072,5.643,3.035
int main(){
    float c[3][4];
    char dummy;
    ifstream readfile;
    readfile.open("data.txt");
    //读入
    for(int i=0;i<3;i++){
        for(int j=0;j<4;j++){
            readfile>>c[i][j];//读入数字
            readfile>>dummy;//去掉逗号
        }
    }
    //输出到屏幕
    for(i=0;i<3;i++){
        for(int j=0;j<4;j++){
            cout<<c[i][j]<<",";
        }
        cout<<endl;
    }
    return 0;
}
回复 支持 反对

使用道具 举报

8#
发表于 2009-11-4 00:09:14 | 只看该作者
ls编译不通过
回复 支持 反对

使用道具 举报

9#
发表于 2009-11-4 00:09:15 | 只看该作者
楼上的,绝对可以编译的。我用的编译器是 vc6.0, 看图 附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 22:42 , Processed in 0.103727 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表