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