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

Знатоки C.

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

  1. danilko

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

    Баллы:
    103
    @Cames , а может ли повлиять разница в размере буффера? (у тебя в fread и fwrite, вроде бы, по разному определено).
    Если что, то я в C не сильно понимаю )
     
  2. J1Mmy

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

    Баллы:
    103
    Нет, это он обращался напрямую к имени в одном случае, а в другом к псевдониму.
    Попробуй так:
    Код:
    void loadFromFile(pStatements pS){
      struct Information buf;
      FILE *file;
      file = fopen("Statements", "rb");
      if (file!= NULL){
      while(fread(&buf, sizeof(INFO), 1, file))
      {
      inset(pS, &buf);
      }
      }
      fclose(file);
      printf("Notes successfully loaded.\n");
    }
    
     
  3. Автор темы
    Cames

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

    Баллы:
    153
    Skype:
    sky_meg
    Неа(
     
  4. J1Mmy

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

    Баллы:
    103
    Странно. У меня и компилируется и работает. Вывода только нет. Сейчас пошагово следить буду.
     
  5. Автор темы
    Cames

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

    Баллы:
    153
    Skype:
    sky_meg
    Жду.
     
  6. J1Mmy

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

    Баллы:
    103
    Работает. Вывод не работал, потому что файла не было. Теперь работает, но выводит после основной ещё 2 мусорные записи. От них можно избавиться сделав pTmp -> next = NULL;
    Код:
    void inset(pStatements pS, pInfo pLoad){
      pInfo pTmp = (pInfo)malloc(sizeof(INFO));
      pTmp = pLoad;
      pTmp -> next = NULL;
      pInfo pI;
      if (pS -> begin == NULL){
      pS -> begin = pTmp;
      } else
      {
      pI = pS -> begin;
      while(pI -> next != NULL){
      pI = pI -> next;
      }
      pI -> next = pTmp;
      }
      pS -> len++;
    
    }
    

    Код:
    void loadFromFile(pStatements pS){
      struct Information buf;
      FILE *file;
      file = fopen("Statements", "rb");
      if (file!= NULL){
      while(fread(&buf, sizeof(INFO), 1, file))
      {
      inset(pS, &buf);
      }
      }
      fclose(file);
      printf("Notes successfully loaded.\n");
    }
    
    ЗЫ: поправил код(забыл скопировать заного)
    ЗЗЫ: Дописал что подправить надо в подгрузке.
     
    Последнее редактирование: 18 июн 2014
  7. Автор темы
    Cames

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

    Баллы:
    153
    Skype:
    sky_meg
    Не работает что в Dev'е, что в VS
    Что ж за напасть:cry:

    Может в компиляторе проблема? Странно блин.
     
    Последнее редактирование: 19 июн 2014
  8. J1Mmy

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

    Баллы:
    103
    Что теперь говорит?
     
  9. Автор темы
    Cames

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

    Баллы:
    153
    Skype:
    sky_meg
    Урааа, заработало!
    Спасибо большое) В лс пиши, что я тебе должен за помощь.
     
  10. J1Mmy

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

    Баллы:
    103
    Не стоит благодарности) только перепроверь условие в showMeStat().
    Он лишний раз пробегает по циклу.
     
  11. Автор темы
    Cames

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

    Баллы:
    153
    Skype:
    sky_meg
    Вроде нормально все. С inset разбираться буду, чтобы не цеплял лишнего.
    У тебя он нормально из файла загружал? У меня один мусор.
     
  12. J1Mmy

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

    Баллы:
    103
    Из файла он читает 1 запись, как и требуется. А выводит он не правильно. inset() работает, а в showMeStat() почему-то цикл не 1 раз проходит. Я только выявил, что там не так что-то. Изучать не стал.
     

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