안녕하세요 100 개의 문자열을 유지하고 싶습니다. 각 문자열을 2 차원 문자 배열로 복사하려고합니다. 프로그램을 컴파일하는 중에 오류가 발생합니다.문자열을 2 차원 문자 배열로 복사하는 중 오류가 발생했습니다.
error: incompatible types in assignment of 'char' to 'char [10]'
make[1]: *** [HPortClient.o] Error 1
어떻게이 문자열을 2D 문자 배열로 복사해야하는지 알려주세요. 아래는 코드 스 니펫입니다.
//-----------------------------------------------------------------------------------------
#define MAX_DEVICE_NAMES 100
#define MAX_CHAR_NAME 10
struct HartShmDeviceData {
char m_Name[MAX_DEVICE_NAMES][MAX_CHAR_NAME];
};
struct HartShmDeviceData *khdev;
void HPortClient::WriteDeviceListInShm(void)
{
HartDevice *hDev;
std::string tmp;
int i=0;
ITERATOR iter;
for(iter = m_DeviceList.begin(); iter !=m_DeviceList.end(); ++iter)
{
hDev = *iter;
const char *ptr=tmp.c_str();
tmp = hDev->getName();
ptr=tmp.c_str();
strcpy(khdev->m_Name[i++],ptr); //Error in this line
//khdev->m_Name[tmp.size()] = '\0'; // don't forget the terminating 0
}
}
정말로 오류는'strcpy()'줄에 있고 문자열을 끝내려는 다음 줄에 있지 않습니까? 'strcpy()'행은 괜찮아 보입니다. 다음 행은 괜찮습니다. – uesp
'struct HartShmDeviceData * khdev'에 실제로 어디에서 메모리를 할당합니까? 그것은 결국 * 포인터 *입니다. – EOF
코드가 C 또는 C++입니까? 그것이 C++에 있다면'strcpy '사용을 자제해라. –