Neden ctime tarafından döndürülen dizgiyi() satır besleme içerir? | Netgez.com
SORU
23 EKİM 2013, ÇARŞAMBA


Neden ctime tarafından döndürülen dizgiyi() satır besleme içerir?

Neden dize ctime() tarafından döndürülen satır besleme (0x0A) son karakter olarak var mı? Örneğin, bu kod:

#include <iostream>
#include <cstdlib>

int main(int argc, char* argv[])
{
    time_t now;
    time(&now);
    char* time_str = ctime(&now);
    std::cout << time_str << "why is this on a new line?" << std::endl;
    return 0;
}

...aşağıdaki çıktıyı üretir:

$ ./time.exe
Wed Oct 23 14:52:29 2013
why is this on a new line?
$ 

Büyük bir şey değil; dizeden son bayt şerit olabilir, ama neden ctime() oraya koyabilir?

CEVAP
23 EKİM 2013, ÇARŞAMBA


C99 Mantığına göre, yeni hat sayesinde varvarolan bir uygulamatarihsel nedenlerle demekle aynıdır bence.

Rationale for International Standard — Programming Languages — C §7.23.3.1 asctime işlevi

Bu fonksiyonun adını çıkarma ASCII ilkesi ile bir çatışma göstermektedir rağmen Standart bağımlılıkları, adı önceki sanat sayesinde korundu.Mevcut uygulama aynı nedenle, dize biçimi olan yeni satır karakteri kaldırmak için bir öneri kabul edilmedi.

Bu ctime aynı kural geçerlidir yani 10**, eşdeğer olduğundan asctime, bahsetmiyor ama.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • Chaoticmoogle

    Chaoticmoogl

    13 ÅžUBAT 2006
  • Damien Walters

    Damien Walte

    20 AÄžUSTOS 2006