Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
#1

Segmentation fault при использовании модуля <time.h> - C++

30.10.2011, 19:05. Просмотров 1011. Ответов 6
Метки нет (Все метки)

Есть код
C++
1
2
3
4
5
6
7
time_t now;
struct tm * ptr;
static char tbuf[64];
bzero(tbuf,64);
time(&now);
ptr = localtime(&now);
strftime(tbuf, 64, "%c ", ptr);
На что вылезают предупреждения
testerd.c:25:6: предупреждение: в присваивании целое преобразуется в указатель без приведения типа [по умолчанию включена]
testerd.c:26:2: предупреждение: несовместимая неявная декларация внутренней функции «strftime» [по умолчанию включена]
И segmentation fault при запуске программы. Если закоментировать strftime и поставить tbuf[0] = '\0', то все работает. Подскажите, в чем проблема?
Компилятор gcc 4.6.2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 19:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Segmentation fault при использовании модуля <time.h> (C++):

Segmentation fault при наследовании класса - C++
Доброго времени суток! Имею класс Initialise и класс Environment. В первом создаются экземпляры движка и прочие сопутствующие вещи....

Segmentation fault при работе со стеком - C++
Господа, если не затруднит, помогите пожалуйста с этой проблемой: Код компилируется, запускается -- и сразу аварийно завершает работу....

Segmentation fault при вызове метода - C++
Собственно такое дело, имеется следующий код: Item* m_items; Player::Player() { ... memset(m_items, 0,...

Ошибка выполнения Segmentation fault при открытии файла - C++
Привет всем! почему не открывается файл, не понимаю что такое? ubuntu 16, qt creator 3.6.1 #include &lt;string&gt; #include &lt;iostream&gt; ...

Ошибка "Segmentation fault" при организации дерева - C++
Есть следующие функции Three сreateThree(Node **q) { if((*q)-&gt;p) { Three *one, *two; one =...

[C/C++] "Segmentation fault" при попытке передачи параметра командной строки. - C++
Прога вылетает при попытке передачи параметра через командную строку.Такой код: #include &lt;iostream&gt; #include &lt;cstring&gt; #include...

6
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
30.10.2011, 19:25 #2
DKOI, где-то ещё не комильфо, это у меня нормально и скомпилировалось, и отработало.
Segmentation fault при использовании модуля <time.h>

Код
$ gcc -dumpversion
4.0.1
1
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
30.10.2011, 19:26 #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <time.h>
 
int main()
{
 
    time_t now;
    struct tm * ptr;
    static char tbuf[64];
    bzero(tbuf,64);
    time(&now);
    ptr = localtime(&now);
    strftime(tbuf, 64, "%c ", ptr);
    puts(tbuf);
}
Bash
1
2
3
4
5
6
eugene@pc-eugene:~/c$ gcc test1.c -o test1
test1.c: В функции «main»:
test1.c:10:2: предупреждение: несовместимая неявная декларация внутренней функции «bzero» [по умолчанию включена]
eugene@pc-eugene:~/c$ ./test1
Sun Oct 30 21:15:41 2011 
eugene@pc-eugene:~/c$
gcc 4.6.1
1
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
30.10.2011, 19:28 #4
Евгений М., bzero объявлена в strings.h
1
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
30.10.2011, 19:41  [ТС] #5
C
1
2
3
4
5
6
7
8
9
10
11
12
char*
get_time()
{
    time_t now;
    struct tm *ptr;
    static char tbuf[64];
    bzero(tbuf, 64);
    time(&now);
    ptr = localtime(&now);
    strftime(tbuf, 64, "%c ", ptr);
    return tbuf;
}
C
1
2
3
char str[312];
bzero(str, 312);
strcpy(str, get_time());
больше get_time() нигде не используется

Добавлено через 10 минут
В общем, нашел причину всех бед. В задании было сказано использовать <sys/time.h>. Посему ошибка и выскакивала. Поставил <time.h> и все заработало. Ваш пример помог разобраться Спасибо.
0
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
30.10.2011, 19:48 #6
Цитата Сообщение от DKOI Посмотреть сообщение
В задании было сказано использовать <sys/time.h>. Посему ошибка и выскакивала. Поставил <time.h> и все заработало.
Не понял.
По названию темы - Вы использовали <time.h>
Поставили <time.h> (или ничего не изменили) - заработало.
Вот такой у меня вывод.
1
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
30.10.2011, 20:13  [ТС] #7
Суть ошибки была в том, что я считал, что <sys/time.h> и <time.h> суть одно и то же. Оказалось, что это не так.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2011, 20:13
Привет! Вот еще темы с ответами:

Segmentation fault - C++
Пишу лабу для универа. В общем необходимо использовать только свои функции, никаких, str... подобных функций использовать нельзя. ...

Segmentation fault - C++
Почему при таком варианте происходит Segmentation fault? vec3f trace(const Scene&amp; scene, const Ray&amp; ray) { const RenderObject*...

Segmentation fault :( - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; struct test{ int id; char name; }; struct first{

Segmentation fault - C++
Всем привет. Пишу быдлокод для лабы в универе. Мне по определенному алгоритму необходимо получить из одного поколения особей, новое. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
30.10.2011, 20:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru