Why does the string returned by ctime() contain a line feed? Why does the string returned by ctime() contain a line feed? c c

Why does the string returned by ctime() contain a line feed?


According to the C99 Rationale, the new line exists because of existing practice, which I think it's the same as saying for historical reasons.

Rationale for International Standard — Programming Languages — C §7.23.3.1 The asctime function

Although the name of this function suggests a conflict with the principle of removing ASCII dependencies from the Standard, the name was retained due to prior art. For the same reason of existing practice, a proposal to remove the newline character from the string format was not adopted.

This talks about asctime, but since ctime is equivalent to asctime(localtime(timer)), so the same rule applies.


The POSIX Standard claims historical compatibility:

[asctime] is included for compatibility with older implementations ... Applications should use strftime() to achieve maximum portability.

Given that it was included for compatibility with older implementations, it's reasonable to assume that some older library implemented asctime with a newline at the end


This behaviour is required as defined in the ISO 9899:1990 specification.

7.12.3.1 The asctime functionThe asctime function converts the broken-down time in the structurepointed to by timeptr into a string in the form         Sun Sep 16 01:03:52 1973\n\07.12.3.2 The ctime functionThe ctime function converts the calendar time pointed to by timer tolocal time in the form of a string.  It is equivalent to          asctime(localtime(timer))