c语言程序 从数据文件中读入数据到数组

从数据文件中读入数据到数组,计算最第二大值,输出到屏幕。
(1) 编写函数int read(int arr[])从数据文件data.txt中读入数据到整型数组a,返回读入数据个数n。
(2) 编写函数int getsecond(int arr[],int n)遍历整型数组,求最大值
(3) 在main函数中调用read和getsecond函数完成
2. 输出第二大及第二大所在的下标
修改getsecond函数返回最大值所在的下标

我没学过那个read函数 应该怎么写啊 那个txt文件放哪才能读出来啊
这是别人写的
int read(int arr[])
{
inti=0,n;
FILE*fp;
if((fp=fopen("data.txt","r"))==NULL)
{printf("cantfind the file!");}
while(!feof(fp))
{
fscanf(fp,"%d",&arr[i++]);
}
n=i;
fclose(fp);
returnn;
}
能不能帮忙给个注释。。

1、首先让我们新建一个Class类。

2、书写Main方法。

3、让我们在C盘根目录下新建一个txt文档,内容为‘test’。

4、然后让我们接着写代码,首先创建一个File对象。

5、然后创建一个StringBuilder对象,用于储存读取的内容。

6、接下来,我们用BufferedReader类来进行读取内容了。

7、然后我们将内容来输入到控制台就可以了。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-26
int read(int arr[])
{
int i=0,n;
FILE *fp;//定义文件指针
if((fp=fopen("data.txt","r"))==NULL)//如果文件名不存在
{printf("cantfind the file!");}//则输出没有找到文件
while(!feof(fp))//当不为文件结尾时
{
fscanf(fp,"%d",&arr[i++]);//逐个将文件中的数据放入数组中
}
n=i;//n为数组中数据个数
fclose(fp);关闭文件
return n;返回n即数据个数的值
}
txt文件放在cpp文件同一目录下就可以了本回答被提问者采纳
第2个回答  2014-01-05
//你的这个程序是错的,做如下修改,
///fscanf()读取出来的都是字符串,因此不能直接给int类型,不然数据就出现不是你写入txt//中的数据,要把字符串变成数字才行,一下就是数字字符串变成数字atoi()
//用法如下:a="4560"
//int b=atoi(a)
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
int read(int arr[])
{
       int i=0,n;
       char name[100];
       FILE *fp;//定义文件指针
       if((fp=fopen("data.txt","r"))==NULL)//如果文件名不存在
       {printf("cantfind the file!");}//则输出没有找到文件
       while(!feof(fp))//判断文件是否结束
       {  
              fscanf(fp,"%s",name);//逐个将文件中的数据放入字符串中
  arr[i++]=atoi(name);//把字符串转变成数字(int)类型
  printf("%d\n",arr[i-1]);
       }
       n=i;//n为数组中数据个数
       fclose(fp);//关闭文件
       return n;//返回n即数据个数的值
}
void main()
{

int arr[100];
read(arr);
}

追问

这程序是对的==。
不过还是涨姿势了 谢谢大神

追答

i

int read(int arr[])
{
       int i=0,n;
       FILE *fp;//定义文件指针
       if((fp=fopen("data.txt","r"))==NULL)
       {printf("cantfind the file!");}
       while(!feof(fp))
       {  
              fscanf(fp,"%d",&arr[i++]);
             printf("%d ",arr[i-1]);//////看看和文本数据能一样吗??、
       }
       n=i;
       fclose(fp);
       return n;
}

追问

是不是 那个n错了? 应该是 n=i-1 我当时没仔细看,反正以为有程序出来就以为对了。。

追答

不是,具体原因我上面说了

相似回答