我正试图用C语言中的结构和指针搞乱。 我想要完成的是用户在main()中以DD-MM-YYYY格式输入日期,然后解析字符串formatted_date。我已经阅读了一些关于如何执行此操作的建议,但不了解如何应用它。任何帮助都非常感谢。 谢谢!
#ifndef DATE_H_
#define DATE_H_
// Define the structure date.
typedef struct {
int tm_mday;
int tm_month;
int tm_year;
} date;
// Parses a string 'formatted_date' representing a date
// in format DD-MM-YYYY, DD.MM.YYYY or DD/MM/YYYY
// into a structure date 'parsed_date'.
void parse_formatted_date(char * formatted_date, date * parsed_date) {
}
答案 0 :(得分:2)
您可以使用sscanf()
来解析此格式的日期字符串,如下所示:
int parse_formatted_date(const char *formatted_date, date *parsed_date) {
const int ret = sscanf(formatted_date, "%d-%d-%d",
&parsed_date->tm_mday,
&parsed_date->tm_month,
&parsed_date->tm_year);
return ret == 3;
}
这是完整的测试程序:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int tm_mday;
int tm_month;
int tm_year;
} date;
int parse_formatted_date(const char *formatted_date, date *parsed_date) {
const int ret = sscanf(formatted_date, "%d-%d-%d",
&parsed_date->tm_mday,
&parsed_date->tm_month,
&parsed_date->tm_year);
return ret == 3;
}
int
main(int argc, char *argv[])
{
date d;
char *formatted_date = "06-03-2014";
if (parse_formatted_date(formatted_date, &d))
printf("date: %s\ndd = %d, mm = %d, yy = %d\n", formatted_date,
d.tm_mday, d.tm_month, d.tm_year);
exit(EXIT_SUCCESS);
}