c++ - 从配置文件读取和存储值的函数
问题描述
我对 C++ 编程比较陌生,我只是想创建一个函数来打开配置文件,读取每一行和每一列,然后将值存储到某个数组中。
所以我的配置文件看起来像这样,它只是存储值:
12345 10 20
67890 30 40
...
...
我想要做的是打开这个文件,读取每一行并将值存储到一个[i][j]
数组中。因此,对于上述内容,它将存储为:
[0][0] = 12345
[0][1] = 10
[0][2] = 20
[1][0] = 67890
[1][1] = 30
[1][2] = 40
我一直在fopen
研究打开文件的函数,但是当我研究如何以我想要的方式存储这些值时(使用类似fgets
的函数),我一直碰壁。
到目前为止我的尝试:
#include <iostream>
using namespace std;
int main()
{
FILE *fp;
fp = fopen("configFile.conf","r");
char a[20];
char b[20];
char c[20];
fscanf(fp, "%s\t%s\t%s", a, b, c);
cout << a << " " << b << " " << c << endl;
}
输出:
12345 10 20
现在我只想修改这个循环直到文件结束,并将值存储在基于第 i 个元素的数组中。
解决方案
这是 C 代码:
#include <stdio.h>
int main()
{
FILE *fp;
int i = 0;
fp = fopen("configFile.conf", "r");
if(fp == NULL) // To check for errors
{
printf("Error \n");
}
char a[20][20]; // Declared a 2D array
char b[20][20];
char c[20][20];
while (fscanf(fp, "%s\t%s\t%s", a[i], b[i], c[i]) != EOF) //fscanf returns EOF if end of file (or an input error) occurs
{
printf("%s %s %s\n", a[i], b[i], c[i]);
i++;
}
return 0;
}
C++代码是:
#include <iostream>
using namespace std;
int main()
{
FILE *fp;
int i = 0;
fp = fopen("configFile.conf", "r");
if(fp == NULL) // To check for errors
{
cout<< "Error" << endl;
}
char a[20][20]; // Declared a 2D array
char b[20][20];
char c[20][20];
while (fscanf(fp, "%s\t%s\t%s", a[i], b[i], c[i]) != EOF) //fscanf returns EOF if end of file (or an input error) occurs
{
cout << a[i] << " " << b[i] << " " << c[i] << endl;
i++;
}
return 0;
}
推荐阅读
- c++ - 包含 C++ Builder Windows 服务的 Wix 安装程序包
- django - 我正在尝试使用 ajax Django 将数据上传到数据库,但它不能正常工作
- c# - 实体数据模型向导(崩溃)VS2019 Windows Forms C#
- oracle - Oracle Count 基于 key 的动态组数
- node.js - 在 postgresql 中循环用户 ID 的数组
- php - 无法在 perfex CRM 中测试 add_action
- html - 当显示几行时,表格第一行变得很大
- react-native-ios - 模拟器未从 xcode 启动,但应用程序正在构建
- sql-server - 获取运行时错误“3159”:提取 SQL 记录集时不是有效的书签
- entity-framework - Redis 作为实体框架的二级缓存