пытаюсь скопировать указатель символа с помощью memcpy, получаю ошибку

StackOverflow https://stackoverflow.com/questions/2091507

  •  21-09-2019
  •  | 
  •  

Вопрос

поэтому я хочу скопировать указатель на символ, спросил друга, и он сказал использовать memcpy...поэтому я пытаюсь сделать это:

charFilenameAndPath=strtok(filename,".");
memcpy=(charFilename,charFilenameAndPath, sizeof(charFilenameAndPath));

и компилятор выдает это:

uTrackSpheres.cpp:176: error: assignment of function ‘void* memcpy(void*, const void*, size_t)’
uTrackSpheres.cpp:176: error: cannot convert ‘unsigned int’ to ‘void*(void*, const void*, size_t)throw ()’ in assignment

Я также пробовал использовать strlen вместо sizeof

Это было полезно?

Решение

Во второй строке:

memcpy=(charFilename,charFilenameAndPath, sizeof(charFilenameAndPath));

есть подделка = знак.

Как только вы это исправите, ваш вызов все равно будет неправильным. charFilenameAndPath это возвращаемое значение из strtok(), поэтому это должно быть char *.Итак, вы копируете sizeof(char *) байты в charFilename, ты, наверное, хочешь strlen(charFilenameAndPath)+1 вместо этого байты (или вы можете использовать strcpy()).В любом случае, вы должны убедиться, что strtok() не вернулся NULL и это charFilename имеет достаточно места.

Другие советы

memcpy за которым следует = и не должно быть.В сообщении об ошибке говорится, что вы пытаетесь присвоить символу новое значение. memcpy, а это не то, что вы хотите сделать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top