C:使用printf等精度说明符分配字符串变量

时间:2013-07-25 18:35:10

标签: c string variables

我想使用像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中是不可能的?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

这在C中不起作用。您可以使用sprintf,请参阅this