У меня есть программа на C, которая загружает файл построчно в одну строку, а затем memcpy в эту строку в другой строковый указатель, используя этот код:
typedef struct inmod_struct {
Int32 ReturnCode;
Int32 Length;
char Body[ROWSIZE];
} inmdtyp,*inmdptr;
inmdptr inmodptr;
char line[600];
int doit()
{
char *p;
p = inmodptr->Body;
ReadFile(); //reads a line of the file into **line** string variable
memcpy(p, line, strlen(line));
p += strlen(line);
inmodptr->ReturnCode = 0;
inmodptr->Length = p - inmodptr->Body;
reccnt++;
}
Но когда я выполняю вышеуказанную программу наНа моем компьютере с Windows XP SP3 я получаю сообщение об ошибке:
Инструкция в ""ссылка на память"". Память не может быть" записана ". Нажмите OK, чтобы завершить ....
Я столкнулся с подобной проблемой, когда пытался выполнить аналогичные операции с памятью, это вызывает похожие проблемы. Strcpy лучше всего работает длямне, но strcpy пропускает чтение до NUL символа в строке, но у меня будет еще несколько символов для чтения, даже после NUL в строке. Кто-нибудь может пожалуйста предоставить обходной путь или любую подсказку для этого.
Среда: Windows XPSP3, компилятор GCC.
Я даже пытался подобным образом компилировать и использовать код на Solaris Unix, и я столкнулся с той же проблемой там.Примеры также.
Редактировать: Извините, ребята .. У меня есть инициализированный указатель p p = inmodptr->Body;
inmodptr является структурой. И я могу подтвердить, что инициализация указателя не является проблемой.полный код для наглядности