电脑网络

为什么我的shuju.txt文件输入1或两个数据dev没错输入3或4个数据dev运行就会停止工作

346 浏览

为什么我的shuju.txt文件输入1或两个数据dev没错 输入3或4个数据dev运行就会停止工作

1 个回答

宝宝七七用户头像
宝宝七七 回答于 2024-07-20
已采纳

提问:为什么我的shuju.txt文件输入1或两个数据dev没错输入3或4个数据dev运行就会停止工作

#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<process.h>#include<math.h>#include<string.h>struct shuju *sj;char(*str)[15][20];int k;struct shuju{ double p0;double q0;double imax;double imin;double v0;int month;};read(const char strname[100]){FILE*fp;int n,m,i;char ch;if((fp=fopen(strname,"r"))==NULL){printf("error!\n");exit(0);}while((ch=fgetc(fp))!=EOF){if(ch=='\n')k++}rewind(fp);str=new char[k][15][20];for(m=0,i=0,n=0;(ch=fgetc(fp))!=EOF;){switch(ch){case ' ':break;case',':str[n][m][i]='\0';m++,i=0;break;case'\n':str[n][m][i]='\0';n++,m=0;i=0;break;default:str[n][m][i]=ch;i++;break;}}fclose(fp);return 0;}readshuju(){read("shuju.txt");if(!(sj=new struct shuju[1])){printf("error\n");exit(0); }sj[0].p0=atof(str[0][0]);sj[0].q0=atof(str[0][1]);sj[0].imax=atof(str[0][2]);sj[0].imin=atof(str[0][3]);sj[0].v0=atof(str[0][4]);sj[0].month=atoi(str[0][5]);return 0;}int main(){system("cls");readshuju(); int y,z; FILE *fp; if((fp=fopen("result.txt","w"))==NULL) { printf("ERROR!\n"); exit(0); } fprintf(fp,"sj.p0=%f,sj.q0=%f,sj.imax=%f,sj.imin=%f,sj.v0=%f,month=%f\n",sj[0].p0,sj[0].q0,sj[0].imax,sj[0].imin,sj[0].v0,sj[0].month); }

网友回答:

首先,程序有错,无法编译

k++ //后面少分号了

且你的month是int的,你却用month=%f输出,结果肯定不对(要用%d)

我用多个环境,测试了你的程序,没有发现你说的现象,当然,测试数据格式必须正确

我的测试数据为

结果

我用了linux gcc/dev-cpp/c++builder/vc++2019

当然,你的程序不规范,ISO C++的函数必须的返回值定义的

你的#include<conio.h>也是非ISO标准头文件,多个头文件没用

system("cls");也没意义

我来回答

相关问题