1 Востаннє редагувалося Дмитро-Чебурашка (01.06.2015 19:57:54)

Тема: Звідки const char -"const char [5]" в "char [5]"

#include <sys/stat.h>
#include <memory.h>
#include <fcntl.h>
#include <stdio.h>
#include <io.h>

struct mystruct {
    int i;
    char buf[5];
    double d;
};

int main(int argc, char* argv[])
{
        int fh = _open("file.dat",_O_RDWR | _O_BINARY);
  
          if (fh == -1)
          {   
               fh = _creat("file.dat",_S_IREAD | _S_IWRITE);

                if (fh == -1)
              
                      return 1;
           } 

    mystruct ms;
    memset(&ms,0,sizeof ms);
    ms.i = 43690;
    ms.d = 234881023;
    ms.buf = "Бука";

        _lseek(fh,0,SEEK_END);

        _write(fh,&ms,sizeof ms);

        _lseek(fh,0,SEEK_END);

        _read(fh,&ms,sizeof ms);

    return 0;
}

Ошибка    3    error C2440: =: невозможно преобразовать "const char [5]" в "char [5]"    d:\rozbir\file\zapys_stru\zapys_stru\zapys_stru.cpp    31    1    Zapys_Stru

Що це?  Звідки const char якщо я цього не писав?

2 Востаннє редагувалося koala (01.06.2015 20:42:50)

Re: Звідки const char -"const char [5]" в "char [5]"

ms.buf - це масив. Масиви в C/C++ так не присвоюються.
ms.buf - масив типу char. "Бука" - це літерал-стрічка, тобто, фактично, масив типу const char, он він звідки.

Подякували: Дмитро-Чебурашка1

3

Re: Звідки const char -"const char [5]" в "char [5]"

Проблему бачу в рядку 30. Не можна просто присвоїти рядок масиву символів. Використайте функцію strcpy(ms.buf, "Бука")

Подякували: Дмитро-Чебурашка1

Re: Звідки const char -"const char [5]" в "char [5]"

Величезне спасибі!!