void ReadFromFile() //从文件中读出每个学生的记录信息并显示 { FILE *fin; int i,j; fin=fopen("F:/学生管理/input.txt","r"); if(fin==NULL) { printf("Failed to open a file!\n"); //文件打开失败 exit(0); } fscanf(fin,"%d",&NumOfStudent); fscanf(fin,"%d",&NumOfCourse); stu=(STUDENT*)calloc(NumOfStudent,sizeof(STUDENT)); Total=(int*)calloc(NumOfStudent,sizeof(int)); for(i=0;i<NumOfStudent;i++) { fscanf(fin,"%ld",&stu[i].num); fscanf(fin,"%s",stu[i].name); for(j=0;j<NumOfCourse;j++) { fscanf(fin,"%d",&stu[i].score[j]); Total[i]+=stu[i].score[j]; } } QuickSort(Total,stu,0,NumOfStudent-1); for(i=NumOfStudent-1;i>=0;i--) stu[i].rank=NumOfStudent-i; Head(); Data(); }
时间: 2024-04-29 22:19:43 浏览: 10
这是一个从文件中读取学生信息的函数,具体实现如下:
1. 打开名为 "F:/学生管理/input.txt" 的文件并读取文件中的内容。
2. 从文件中读取总学生数和总课程数。
3. 动态分配内存,创建一个包含 NumOfStudent 个 STUDENT 结构体的数组 stu 和一个包含 NumOfStudent 个 int 类型的数组 Total。
4. 循环读取每个学生的信息,包括学号、姓名、各门课程的成绩,同时计算每个学生的总分。
5. 调用 QuickSort 函数对 Total 数组进行快速排序,同时将 stu 数组与 Total 数组排序。
6. 循环设置每个学生的排名,即将 NumOfStudent 减去当前学生的排序位置。
7. 调用 Head 函数和 Data 函数分别输出表头和学生信息。
总的来说,这个函数实现了从文件中读取学生信息并按照总分排序输出的功能。
相关问题
从txt文件中读出数并写入int[]数组中
可以使用Java中的File和Scanner类来读取txt文件中的数,并使用数组来存储。
以下是示例代码:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadFromFile {
public static void main(String[] args) {
// 定义文件路径和名称
String fileName = "numbers.txt";
File file = new File(fileName);
try {
Scanner scanner = new Scanner(file);
// 定义数组,存储读取的数
int[] nums = new int[10];
int i = 0;
// 逐行读取文件内容,将每个数存入数组
while (scanner.hasNextLine() && i < nums.length) {
int num = Integer.parseInt(scanner.nextLine());
nums[i] = num;
i++;
}
// 打印数组中的数
for (int j = 0; j < nums.length; j++) {
System.out.println(nums[j]);
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
```
在这个示例代码中,我们首先定义了一个名为“numbers.txt”的文件,然后使用Scanner类逐行读取文件内容,并将每个读取的数存储到数组中。最后,我们打印数组中的所有数。
1)从键盘分行输入信息,以“quit”结束,将内容写入文件。 2)再从文件中分行读出内容并输出 .java语言实现
下面是Java语言实现的代码:
```java
import java.io.*;
public class FileIO {
public static void main(String[] args) {
String fileName = "input.txt";
writeToFile(fileName);
readFromFile(fileName);
}
// 从键盘分行输入信息,以“quit”结束,将内容写入文件
public static void writeToFile(String fileName) {
try {
FileWriter writer = new FileWriter(fileName);
BufferedWriter out = new BufferedWriter(writer);
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = in.readLine()) != null && !line.equalsIgnoreCase("quit")) {
out.write(line);
out.newLine();
}
out.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 从文件中分行读出内容并输出
public static void readFromFile(String fileName) {
try {
FileReader reader = new FileReader(fileName);
BufferedReader in = new BufferedReader(reader);
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在该程序中,我们定义了两个方法:`writeToFile`和`readFromFile`。前者从键盘输入信息,并将其写入指定的文件中;后者从指定的文件中读出信息,并逐行输出到控制台上。
在`writeToFile`方法中,我们使用了`FileWriter`和`BufferedWriter`类来实现将数据写入文件的操作。通过`BufferedReader`和`InputStreamReader`类,我们可以从键盘逐行读取输入的信息。每读取一行,就将其写入文件中,直到读取到“quit”为止。
在`readFromFile`方法中,我们使用了`FileReader`和`BufferedReader`类来实现从文件中读取数据的操作。通过`readLine`方法,我们可以逐行读取文件中的信息,并将其输出到控制台上。
在`main`方法中,我们调用了这两个方法来完成整个程序的功能。