2014-10-17 73 views

回答

4

首先更改呼叫:

char date[] = "3.10.2014"; 
change_date(date); 

這使得date到一個數組,你可以實際修改,而不是一個字符串文字,你不能。

然後用change_date()寫出change_date()sscanf()sprintf()

void change_date(char *s) 
{ 
    int y, m, d; 

    if(sscanf(s, "%d.%d.%d", &d, &m, &y) == 3) 
    { 
    sprintf(s, "%d-%d-%d", y, m, d); 
    } 
} 

上面並沒有使用%04d一年來格式化,在被性能稍微不易損壞,如果可用的緩衝區空間太小的希望。

最好還接受size_t s_max參數並使用snprintf(),並有返回值。我選擇了簡潔。

+0

謝謝! :)) – Muflix 2014-10-20 09:16:30