2013-11-12 4 views
1

У меня есть структура, называемая symbolEntry, которая содержит переменную char [31], называемую «имя». У меня есть функция, в которой я передаю char *, по существу строку, и попытаюсь присвоить ее значению имени символаEntry. Однако, я придумал следующую ошибку.Преобразование из char * в char [31] в C

symList.c: 19: ошибка: несовместимые типы при назначении типа «символ [31]» от типа «символ *»

Я попытался создать временную переменную а [31] и с помощью strncopy к скопируйте переданную строку, но я продолжаю получать ту же ошибку. Есть идеи?

Вот мой код:

typedef struct symbolEntry 
{ 
    char type; 
    char name[31]; 
    struct symbolEntry * next; 
} symbolEntry; 

void insertN(symbolEntry ** first, char * symbolName, char type) 
{ 
    symbolEntry * entry = (symbolEntry *)malloc(sizeof(symbolEntry)); 
    entry->type = type; 
    char a[31]; 
    strncpy(a, symbolName, 31); 
    entry->name = a; 
    entry->next = *first; 
    first = &entry; 
} 
+0

strncpy (entry-> name, symbolName, 30); entry-> имя [31] = '\ 0'; – ChuckCottrill

+0

И вы, вероятно, хотите * first = entry; – ChuckCottrill

ответ

2

Там нет необходимости создавать временный массив. Просто используйте strncpy, чтобы скопировать непосредственно в поле структуры name.

+1

Предложите 'entry-> name [31-1] = '\ 0';' после 'strncpy();' – chux

Смежные вопросы