1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Нужны специалисты по C

Тема в разделе "Оффтопик", создана пользователем serega6531, 3 апр 2014.

  1. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Кто тут хорошо знает C? Нужна помощь кое с чем. Отблагодарю лайками.
     
  2. FirePoint

    FirePoint Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Just_Andrew
    Решил выучить С? Именно С или С++?
     
  3. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Нет, вопрос у меня есть. По C.
    Up!
     
  4. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Ну задал бы тут и всё.
     
  5. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Ладно, у меня возникла проблема с отправкой сообщений в minecraft сервер. Я делаю так:

    Код:
    void sendMessage(char *message){
        write(serverpipe[WRITE], message, sizeof(message));
    }
    //...
    char line[256];
    while(fgets(line, sizeof(line), stdin) != NULL){
        sendMessage(line);
    }
    Но отправка ведёт себя странно. В первый раз сервер нормально принимает команду, но во второй и последующие разы он сообщает о неверной команде. Вот вывод сервера:
    Пробовал делать memset(line, '\0', sizeof(line)), но это не помогает.
    Похоже, проблема с буфером. Я посмотрел логи команд:

    Код:
    [20:51:09 03/04]{CONSOLE}: Executed Command "list"
    [20:51:11 03/04]{CONSOLE}: Executed Command "\00\00\00list"
    [20:51:13 03/04]{CONSOLE}: Executed Command "\00\00\00"
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    [20:51:13 03/04]{CONSOLE}: Executed Command ""
    Не знаю, что тут делают \0 и куча пустых строк. Может вы знаете?
    Решил проблему! Вместо
    Код:
    void sendMessage(char *message){
        write(serverpipe[WRITE], message, sizeof(message));
    }
    надо было писать
    Код:
    void sendMessage(char *message){
        write(serverpipe[WRITE], message, strlen(message));
    }
     
    antigate, Jers и Orbis нравится это.

Поделиться этой страницей