从给定日期提取日,月,年

时间:2015-02-08 15:29:52

标签: c++

我正在尝试使用sscanf从给定日期提取日,月,年,但它似乎不起作用。这是我的代码......

我已将日期存储在char数组中。

void dateinp(char date[])
{
     char d[5];
     char y[5];
     char mm[5];
     sscanf(date,"%s-%s-%s",d,mm,y);
     printf("%s\n%s\n%s\n",d,mm,y);
}

我哪里错了?

在输入12-JAN-2015我得到::    12-JAN-2015    -12-JAN-2015    N-二2015年    5

2 个答案:

答案 0 :(得分:2)

您的代码位于C,而问题标有C++。这是C++版本:

// accepts 12-JAN-2015
void dateinp(const string& date)
{
    string d = date.substr(0, 2);
    string mm = date.substr(3, 3);
    string y = date.substr(7, 4);

    cout << d << "/" << mm << "/" << y << endl;
}

另一个版本是:

#include <sstream>
#include <iostream>
using namespace std;

// accepts 12-JAN-2015, also accepts 2-JAN-2015 (where the day is just a single digit)
void dateinp(const string& date)
{
    stringstream ss(date);
    string d, mm, y;

    getline(ss, d, '-');
    getline(ss, mm, '-');
    getline(ss, y, '-');

    cout << d << "/" << mm << "/" << y << endl;
}

答案 1 :(得分:0)

int day, month, year;
sscanf(buffer, "%2d/%2d/%4d",
    &month,
    &day,
    &year);