C++语言结构体数组写入TXT文本
时间: 2023-09-05 15:09:53 浏览: 50
可以通过以下步骤将结构体数组写入TXT文本文件:
1. 定义结构体
定义一个包含需要写入文件的数据的结构体,例如:
```
typedef struct {
int id;
char name[20];
double score;
} Student;
```
2. 定义结构体数组
定义一个包含多个结构体的数组,例如:
```
Student students[3] = {
{1, "Tom", 85.5},
{2, "John", 92.0},
{3, "Mary", 76.5}
};
```
3. 打开文件
使用 fopen 函数打开一个TXT文本文件,例如:
```
FILE *fp;
fp = fopen("students.txt", "w");
```
4. 写入数据
使用 fprintf 函数将结构体数组中的数据写入到TXT文本文件中,例如:
```
int i;
for (i = 0; i < 3; i++) {
fprintf(fp, "%d %s %.2lf\n", students[i].id, students[i].name, students[i].score);
}
```
5. 关闭文件
使用 fclose 函数关闭打开的TXT文本文件,例如:
```
fclose(fp);
```
相关问题
该程序先定义了一个结构体数组来表示3个候选人的姓名和得票结果。程序使用一个循环来读取每个选民输入的候选人姓名,然后根据输入的名字增加相应候选人的得票数或者增加废票数。最后程序输出各候选人的得票结果和废票数,并将统计结果写入文本文件中。c语言思路
以下是一个基于C语言的实现思路:
```c
#include <stdio.h>
#include <string.h>
struct Candidate {
char name[10];
int votes;
};
int main() {
// 初始化候选人信息
struct Candidate candidates[3] = {{"zhang", 0}, {"li", 0}, {"wang", 0}};
int invalid_votes = 0;
// 读取选民输入并统计得票数
char input[10];
while (scanf("%s", input) != EOF) {
int candidate_found = 0;
for (int i = 0; i < 3; i++) {
if (strcmp(input, candidates[i].name) == 0) {
candidates[i].votes++;
candidate_found = 1;
break;
}
}
if (!candidate_found) {
invalid_votes++;
}
}
// 输出统计结果并写入文件
FILE *outfile = fopen("result.txt", "w");
for (int i = 0; i < 3; i++) {
printf("%s: %d votes\n", candidates[i].name, candidates[i].votes);
fprintf(outfile, "%s %d\n", candidates[i].name, candidates[i].votes);
}
printf("Invalid votes: %d\n", invalid_votes);
fprintf(outfile, "Invalid votes: %d\n", invalid_votes);
fclose(outfile);
return 0;
}
```
该程序与C++版本类似,也是使用一个结构体数组来表示3个候选人的姓名和得票结果。程序使用一个循环来读取每个选民输入的候选人姓名,然后根据输入的名字增加相应候选人的得票数或者增加废票数。最后程序输出各候选人的得票结果和废票数,并将统计结果写入文本文件中。不同的是,C语言使用`scanf`来读取输入,使用`strcmp`来比较字符串,使用`fprintf`来写入文件。
编程统计候选人的得票数。设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个候选人的名字,若选民输错候选人的姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票数,要求利用结构体数组表示3个候选人的姓名和得票结果,将最终的统计结果显示输出并写入文本文件中。思路
可以使用一个结构体数组来表示3个候选人的姓名和得票结果,其中每个结构体包含一个字符串变量来存储候选人的姓名和一个整型变量来存储该候选人的得票数。程序需要一个循环来读取每个选民输入的候选人姓名,并根据输入的名字增加相应候选人的得票数或者增加废票数。最后程序需要输出各候选人的得票结果和废票数,并将统计结果写入文本文件中。
以下是一个简单的实现代码(C++):
```cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Candidate {
string name;
int votes;
};
int main() {
// 初始化候选人信息
Candidate candidates[3] = {{"zhang", 0}, {"li", 0}, {"wang", 0}};
int invalid_votes = 0;
// 读取选民输入并统计得票数
string input;
while (cin >> input) {
bool candidate_found = false;
for (int i = 0; i < 3; i++) {
if (input == candidates[i].name) {
candidates[i].votes++;
candidate_found = true;
break;
}
}
if (!candidate_found) {
invalid_votes++;
}
}
// 输出统计结果并写入文件
ofstream outfile("result.txt");
for (int i = 0; i < 3; i++) {
cout << candidates[i].name << ": " << candidates[i].votes << " votes" << endl;
outfile << candidates[i].name << " " << candidates[i].votes << endl;
}
cout << "Invalid votes: " << invalid_votes << endl;
outfile << "Invalid votes: " << invalid_votes << endl;
outfile.close();
return 0;
}
```
该程序先定义了一个结构体数组来表示3个候选人的姓名和得票结果。程序使用一个循环来读取每个选民输入的候选人姓名,然后根据输入的名字增加相应候选人的得票数或者增加废票数。最后程序输出各候选人的得票结果和废票数,并将统计结果写入文本文件中。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)