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

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • Damian Winter

    Damian Winte

    27 ŞUBAT 2007
  • Hudson Music

    Hudson Music

    13 Mart 2007