1

我想使用 printf 之类的精度说明符分配一个字符串变量,而不使用大量的 for 循环。代码从命令行以 YYYYMMDD 的形式传入日期。要以 MM/DD/YYYY 格式打印日期,我将执行以下操作:

char *date = argv[2];
printf("%.2s/%.2s/%.4s", &date[4], &date[6], date);

所以从命令行传递 '20130725' 将打印 '07/25/2013'

但是,如果我尝试,这不起作用:

char *formatted_date = ("%.2s/%.2s/%.4s", &date[4], &date[6], date);
printf("%s\n", formatted_date);

从命令行传递“20130725”将打印“20130725”。

我将如何以与此类似的方式分配变量,或者这在 C 中是不可能的?

4

2 回答 2

4

您不能在初始化时执行此操作,但可以使用sprintf(3)

char formatted_date[11]; // MM/DD/YYYY plus a null terminator
sprintf(formatted_date, "%.2s/%.2s/%.4s", &date[4], &date[6], date);
printf("%s\n", formatted_date);
于 2013-07-25T18:38:14.623 回答
0

这在 C 中不起作用。你可以使用sprintf,看这个

于 2013-07-25T18:38:52.847 回答