c++ - 来自txt文件的总和浮点数,一行字符串后跟一个整数c ++
问题描述
我正在尝试将手动输入歌曲库的分钟数相加,但无法弄清楚如何从每 4 行中提取浮点数直到列表末尾以求和。可以添加此列表,因此它不是要从中提取数据的固定行数。是否可以按照我格式化 txt 文件的方式执行此操作?其他函数将此文件用于显示目的,因此我试图保持格式相同。
这是存储在文本文件“songLibrary.txt”中的数据
Title
Album
Artist
1.5
Title
Album
Artist
1.7
Title
Album
Artist
3.1
解决方案
您需要继续阅读,直到遇到文件结尾。需要注意的一件事是,在读取文件之前无法检测到文件结尾。这就是为什么测试同时在那个while()
和if()
下面的原因。理论上应该在每次读取后检查它,但是由于我们正在丢弃数据,因此没有任何意义。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *fin = fopen( "songLibrary.txt", "rt" );
double sum = 0.0;
if (fin != NULL)
{
char buffer[128];
while ( !feof( fin ) && !ferror( fin ) )
{
// File format:
// Title
// Album
// Artist
// some-number
fgets( buffer, sizeof(buffer), fin ); // read and junk 3 lines of text
fgets( buffer, sizeof(buffer), fin );
fgets( buffer, sizeof(buffer), fin );
fgets( buffer, sizeof(buffer), fin ); // We should have just read a number
if ( !feof( fin ) && !ferror( fin ) )
{
double value = strtod( buffer, NULL ); // TODO check for errors
sum += value;
}
}
fclose(fin);
}
return 0;
}
推荐阅读
- mysql - mysql join和json输出
- php - 使用php中的文件上传进行用户注册
- node.js - Angular 7 HttpClient post请求未发送到nodejs服务器
- c# - 如何从 ASP.NET Core 中的请求标头或 url 读取会话 ID?
- rest - 如果在 Rest Assured / java 中包含“/”,我如何获取键的值?
- python-3.x - HTTPError:HTTP 错误 403:使用 smopy 时的 urllib3
- python - Django pass model to widget in ModelForm
- laravel - 如何配置路线,以便我的水疗中心从路径 /admin 开始?
- postgresql - 在 SELECT 中显示每个位置的本地时区
- excel - 如何将特定页面从单个工作表导出为 pdf?