2012-03-09 2 views
1

У меня есть этот код для создания временной метки: код на C.Почему этот текст включен?

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

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

ответ

3

asctime спецификация (С99 §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 

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

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

0

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

+0

Проблема он описывает, что метка времени находится на первой линии, в то время как «нечто» напечатан на второй строке. –

+0

А, я вижу. Извиняюсь за недоразумение. –

4

Заканчивать
asctime():

строка сопровождается символом новой строки ('\ п') и завершающего нуль-символа.

0

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

strftime function description

Смежные вопросы