#include <stdio.h>
#include <time.h>
#include <string.h>
int main(){
time_t rawtime;
struct tm *info;
char buf[80];
time(&rawtime);
info= localtime(&rawtime);
//Wed Nov 30 17:00:54 2022
strftime(buf, 80, "%a %b %d %X %Y ", info);
//time zone msia = MST
char zone[5]={'M','S','T'};
int carr1= 13, line1= 10;
char carriage= carr1, linefeed= line1;
zone[4]= carriage;
zone[5]= linefeed;
//concat
int len1= strlen(buf);
for (int len2=0; len2<5; len1++, len2++){
buf[len1]=zone[len2];
}
printf("%s",buf);
}
我希望得到12月12日星期四xx:xx:xx MST,但是它只从第二个索引开始输出,变成12月12日xx:xx:xx MST。我不太明白为什么它在手动连接后会这样做。
1条答案
按热度按时间e1xvtsh31#
zone[5]= linefeed;
正在写入zone
的第6个元素,zone
只有5个元素,并且zone[5]
的位置与buf[0]
的位置相同(至少对我来说是这样,显然对您来说也是这样,尽管我不认为这是有保证的)。