编程c语言读取坐标文件,C语言读取文件中,文件的路径是什么

已结贴√

问题点数:20 回复次数:14

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

C语言读取文件中,文件的路径是什么

如题,我在运行的时候始终显示文件A.txt不能打开!

这是以下的全部代码

#include

#include

#include

#define MAX_SIZE 100

typedef struct

{

int i;

int j;

int d;

}DataType;

typedef struct

{

int rn;

int cn;

int tn;

DataType Data[MAX_SIZE];

}TriType;

void pp(FILE *fp, TriType *A)      //文件中矩阵转化为三元组表

{

char ch;

char a[10];

int i=1,j=1,k=0,t=0,n=0;

while((ch=fgetc(fp))!=EOF)

{

if((ch!='\n')&&(ch!=','))

{

a[k]=ch;

k++;

}

else

{

a[k]='\0';

k=0;

if((t=atoi(a))!=0)   //t=atoi(a)把字符串a转换成整型数并赋值给t

{

A->Data[n].d=t;

A->Data[n].i=i;

A->Data[n].j=j;

n++;

}

if(ch==',') j++;

else if(ch=='\n')

{

i++;

A->rn=j;

j=1;

}

}

}

A->cn=i-1;

A->tn=n;

}

void AddMatrix(TriType a,TriType b,TriType *c)        //实现a,b相加

{

int i=0,j=0,k=0;                                 //下标置初始值

while(i

{

if(a.Data[i].i==b.Data[j].i)            //a的行号等于b的行号

{

if(a.Data[i].j==b.Data[j].j)         //a的列号等于b的列号

{

c->Data[k].i=a.Data[i].i;

c->Data[k].j=a.Data[i].j;

c->Data[k].d=a.Data[i].d+b.Data[j].d;  //此时将他们的数据直接相加

i++;

j++;

k++;

}

else if(a.Data[i].j

{

c->Data[k].i=a.Data[i].i;

c->Data[k].j=a.Data[i].j;

c->Data[k].d=a.Data[i].d; //如果行号相等,则相加后的值等于列号更小的矩阵

//中对应元素的值

i++;

k++;

}

else if(a.Data[i].j>b.Data[j].j)   //a的列号大于b的列号

{

c->Data[k].i=b.Data[j].i;

c->Data[k].j=b.Data[j].j;

c->Data[k].d=b.Data[j].d;   //如果行号相等,则相加后的值等于列号更小的矩//阵中对应元素的值

j++;

k++;

}

}

else if(a.Data[i].i

{

c->Data[k].i=a.Data[i].i;

c->Data[k].j=a.Data[i].j;

c->Data[k].d=a.Data[i].d;     //如果列号相等,则相加后的值等于行号更小的矩阵//中对应元素的值

i++;

k++;

}

else if(a.Data[i].i>b.Data[j].i)    //a的行号大于b的行号

{

c->Data[k].i=b.Data[j].i;

c->Data[k].j=b.Data[j].j;

c->Data[k].d=b.Data[j].d;       //如果列号相等,则相加后的值等于行号更小的矩//阵中对应元素的值

j++;

k++;

}

}

while(i>=a.tn&&j<=b.tn)//a超出a的有效数个数,而b未超出,直接把b中超出部分复制到c

{

c->Data[k].i=b.Data[j].i;

c->Data[k].j=b.Data[j].j;

c->Data[k].d=b.Data[j].d;

j++;

k++;

}

while(j>=b.tn&&i<=a.tn) //超出b的有效数个数,而a未超出,直接把a中超出部分复制给c

{

c->Data[k].i=a.Data[i].i;

c->Data[k].j=a.Data[i].j;

c->Data[k].d=a.Data[i].d;

i++;

k++;

}

c->rn=a.rn;

c->cn=

c->tn=k;

}

void pull(FILE *fp,TriType &C)            //将C存入fp所指向的文件

{

int ch1=0;

char ch2=',' ,ch3='\n';

int i=1,j=1,k=0;

for(i=1;i<=)

for(j=1;j<=C.rn;j++)

{

if(j==C.Data[k].j&&i==C.Data[k].i)  //如果i,j分别等于C中元素的行和列!写入C

//中的第k个元素!否则写入'0,'

{

fprintf(fp,"%4d",C.Data[k].d);

if(j!=C.rn)fputc(ch2,fp);

k++;

}

else

{

fprintf(fp,"%4d",ch1);

if(j!=C.rn)fputc(ch2,fp);

}

if(j==C.rn) fputc(ch3,fp);

}

fclose(fp);

}

void  main()

{

TriType A;

TriType B;

TriType C;

FILE *fp1;

if((fp1=fopen("A.txt","r"))==NULL)          //只读方式打开A.txt

{

printf("文件A.txt不能打开!\n");

return;

}

FILE *fp2;

if((fp2=fopen("B.txt","r"))==NULL)           //只读方式打开B.txt

{

printf("文件B.txt不能打开!\n");

return;

}

FILE *fp3;

if((fp3=fopen("C.txt","w+"))==NULL)           //读写方式打开C.txt

{

printf("文件C.txt不能打开!\n");

return;

}

pp(fp1, &A);                           //文件A.txt中矩阵转化为三元组表A

pp(fp2, &B);                          //文件B.txt中矩阵转化为三元组表B

if()                //判断A,B是否是相同类型的矩阵

{

AddMatrix(A,B,&C);                 //矩阵相加后存入C

pull(fp3,C);                        //C存入到文件C.txt

printf("矩阵相加后结果如下:\n");

char ch;

if((fp3=fopen("C.txt","r"))==NULL)         //只读方式打开C.txt

{

printf("文件C.txt不能打开!\n");

return;

}

ch=fgetc(fp3);        //从文件C.txt中输出矩阵C

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp3);

}

fclose(fp3);

printf("有效数字共:%d\n行数:%d\n列数:%d\n",C.tn,,C.rn);

}

else  printf("A,B不是同种类型矩阵,即矩阵行数或列数不相等!!\n");

}

搜索更多相关主题的帖子:

include C语言 三元

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值