Home > Back-end >  How to use the fscanf function brought a comma read the data from CSV file format stored in a struct
How to use the fscanf function brought a comma read the data from CSV file format stored in a struct

Time:10-18

2012/07/02 09:16, 2518.8, 2518.8, 2511.2, 2514.2, 8.00, 2577.00
2012/07/02 09:17, 2515.0, 2515.8, 2515.0, 2515.8, 10.00, 2586.00
2012/07/02 09:18, 2515.4, 2515.4, 2515.0, 2515.0, 4.00, 2590.00
2012/07/02 09:19, 2514.0, 2514.0, 2514.0, 2514.0, 4.00, 2593.00
2012/07/02 09:20, 2515.8, 2515.8, 2515.8, 2515.8, 1.00, 2594.00
2012/07/02 09:21, 2515.8, 2515.8, 2515.8, 2515.8, 0.00, 2594.00
2012/07/02 09:22, 2515.8, 2515.8, 2515.8, 2515.8, 0.00, 2594.00

CodePudding user response:

Read the variable, then assigned to the structure

CodePudding user response:

O code ah, kiss

CodePudding user response:

 
Char * STR="2012/07/02 09:16, 2518.8, 2518.8, 2511.2, 2514.2, 8.00, 2577.00";
Typedef struct __myData
{
Char date [16].
Char time [12].
Double data [6].
} myData.

MyData md;
If (==8 sscanf (STR, "% [^ 'and'], % [^ 'and'], lf, % % lf, lf, % % lf, lf, % % lf", md., date, md., time, & amp; Md. Data [0], & amp; Md. Data [1], & amp; Md. Data [2], & amp; Md. Data [3], & amp; Md. Data [4], & amp; Md. Data [5]))
{
//parsing success
}
The else
{
//parse error
}

CodePudding user response:

Read from file...
 
# include & lt; Stdio. H>
# include & lt; Fstream>
using namespace std;
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Typedef struct __myData
{
Char date [16].
Char time [12].
Double data [6].
} myData.
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Bool readRec (const char * STR, myData & amp; Md, int count)
{
If (count==sscanf (STR, "% [^ 'and'], % [^ 'and'], lf, % % lf, lf, % % lf, lf, % % lf",
Md. Date, md., time, & amp; Md. Data [0], & amp; Md. Data [1],
& Md. Data [2], & amp; Md. Data [3], & amp; Md. Data [4], & amp; Md. Data [5]))
{
//parsing success
return true;
}
The else
{
//parse error
return false;
}
}
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Void __fastcall TForm1: : Button1Click (TObject * Sender)
{
Char * dbFileName="z: \ \ test. TXT";
Ifstream in (dbFileName);
String s;
MyData md;
While (getline (in s))
{
If (readRec (s.c _str (), md, 8))
{
//successfully parsed line
}
}
in.close();
}
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

  • Related