Почему этот текст на линии? - PullRequest
1 голос
/ 09 марта 2012

У меня есть этот код для создания метки времени: код находится в C.

void timestamp()
{
    time_t ltime; /* calendar time */
    ltime=time(NULL); /* get current cal time */
    printf("%s Something\n",asctime( localtime(&ltime) ) );
}

, почему на следующей строке стоит текст «Something»?Что я могу сделать, чтобы это было на одной линии?Я запутался, потому что у меня нет \ n после% s, поэтому он должен быть в той же строке, но это не так.Thx.

Ответы [ 4 ]

4 голосов
/ 09 марта 2012

Check
asctime () :

За строкой следует символ новой строки ('\ n') изавершающий нулевой символ.

3 голосов
/ 09 марта 2012

Спецификация asctime (C99 §7.23.3.1 / 2) гласит:

#include <time.h>
char *asctime(const struct tm *timeptr);

Функция asctime преобразует время разбивки в структуре, на которую указывает timeptr в строку в виде

Sun Sep 16 01:03:52 1973\n\0

Обратите внимание на символ новой строки в конце времени.

Если вы не хотите, чтобы время следовало за новой строкой, вам нужно удалить новую строку самостоятельно или использовать другую библиотечную функцию, например strftime.

0 голосов
/ 09 марта 2012

Пожалуйста, используйте следующую функцию, чтобы сделать пользовательский формат, другие преобразования автоматически добавляют новую строку:

Описание функции strftime

0 голосов
/ 09 марта 2012

Это потому, что у вас есть символ возврата каретки (\n) после слова «Нечто»? Это создаст новую строку, которая поместит любую следующую информацию в следующую строку, оставив «Something» на отдельной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...