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

  • Floortile83

    Floortile83

    16 Ocak 2010
  • kimaliz

    kimaliz

    18 Temmuz 2006
  • Unbox Therapy

    Unbox Therap

    21 Aralık 2010