#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int main(int argc, char* argv[])
{
ifstream ifile;
char fName[30][30];
long int uTime[30][10];
ifile.open("sync.log");
char ch;
string str = "";
if(ifile.fail())
{
cout<<"Invalid File Name!";
system("pause");
exit(1);
}
int i = 0;
while(!ifile.eof())
{
getline(ifile, str);
cout<<str<<endl;
sscanf(str.c_str(),"%ld %[^\n]",&uTime[i],fName[i]);
i++;
str = "";
}
ifile.close();
system("pause");
cout<<"Output:"<<endl;
for(i = 0 ; i < 2 ; i ++)
{
cout<<uTime[i]<<" ";
cout<<fName[i];
cout<<endl;
}
getch();
return 0;
}
文件: sync.log
格式:
1399865017 Test1.txt
1399865017 Test1.txt
所以这是我的完整代码,我在根目录中有sync.log文件,VC ++保存了项目...
从文件中读取后,它必须像这样存储在数组中
uTime [0] = 1399865017;
fName [0] =“Test1.txt”;
fName [1] =“Test1.txt”;
上面的代码我得到了
uTime [0] = 0012F6B0和fName [0] =“Test1.txt”
我想要这个uTime [0] = 1399865017;
fName [0] =“Test1.txt”;
答案 0 :(得分:1)
我认为您打算使用:
long int uTime[30];
而不是
long int uTime[30][10];
这样,将数据读入uTime
的行和将uTime
写入cout
的行是有意义的。
答案 1 :(得分:0)
鉴于你有:
long int uTime[30][10];
当你这样做时:
cout << uTime[i] << …
您正在打印指向10 long
数组的指针。该指针的格式为十六进制;这就是你得到十六进制输出的原因。
你需要修正sscanf()
电话 - 你有&uTime[i]
的虚假论点 - 以及输出。由于不清楚为什么uTime
是一个2D数组,所以不容易告诉你如何修复它,但最简单的解决方案是从数组定义中删除[10]
。