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

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011