0x20是空格,0x2c是逗号,0x0D0A是换行符
碰到空格,空格前的字符入栈A,碰到逗号或者换行,这之前的数字入栈B
再就是用一个char接收每次读取的字符,然后用一个缓冲区把这个字符添加到结尾,当碰到0x20时候,缓冲区把值转换为数字,把数字入栈A,然后再这样一次读一个字节,当遇见0x2c或者0x0d0a时候,把前面的缓冲区的字符转换为数字存储入栈B,这样应该就行了,(每次读一字节,当读到0d时,文件指针向后移动一个字节跳过读取0a,因为只要出现0d就能确定一定是换行)
这个题目的难点,应该就在于判断哪一类数字归为一类,而明显的
用空格分开的是一类,用逗号或者回车符分开的是另外一类
以下代码在visual studio2008下测试成功,另外,给楼主一个建议:为了能更方便地操作数据,建议别把数据存在两个数组中。由于你的第一列是序号,具有唯一性,因此可以将它们存在一个map中。代码如下:
//////////////////////////////////////////////////////////////////////////
//
// 说明:为了能更方便地操作数据,我建议别把数据存在两个数组中。由于你的第一
// 列是序号,具有唯一性,因此可以将它们存在一个map中
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int main() {
ifstream myFile;
myFile.open("transaction.txt");
char output[100];
if (myFile.is_open()) {
while (!myFile.eof()) {
myFile >> output;
cout<
#include
#include
#include
using namespace std;
void main(){
char ch[100] = "\0";
char a[100][100],b[100][100];
int x=0,y=0;
ifstream fin("transaction.txt",ios::in);
fin.getline(ch,100);
while(!fin.eof()){
cout<
result = strtok(ch," ");
strcpy(a[x++],result);
cout< result = strtok(NULL,",");
while( result != NULL ) {
strcpy(b[y++],result);
cout< result = strtok( NULL, "," );
}
memset(ch,0,100);
fin.getline(ch,100);
}
fin.close();
/* for(int i=0;i<14;i++)
{
cout<<"a "< }*/
}
//已运行过了,没问题