как получить доступ к массиву внутри структуры, используя указатель на структуру - PullRequest
3 голосов
/ 29 декабря 2011
struct node{
    char a[100];
    struct node* next;
};
typedef struct node* nodeptr;
main()
{
    char b[100];
    nodeptr p;  
    int n;          
    printf("enter the string\n");
    scanf("%s",b);          
    n=strlen(b);                
    p=getnode();                    
    p->a=b;                             
    p->next=null;                           
    printf("%s \n",(q->a));                     
    return 0;                                       
}

Как я могу получить доступ к массиву внутри структуры, используя указатель структуры? Это правильный метод? Я получаю следующую ошибку во время компиляции:

incompatible types when assigning to type ‘char[100]’ from type ‘char *’ "

Ответы [ 2 ]

4 голосов
/ 29 декабря 2011

Ваш код на p->a=b просто не разрешен, поскольку является массивом, а не указателем, и вы пытаетесь скопировать указатель на массив.Попробуйте strncpy(p->a, b, 100) (конечно, вы должны иметь 100 как #define)

4 голосов
/ 29 декабря 2011

Массивы не могут быть скопированы в C.

Вы обращаетесь к ним правильно, но вам нужно скопировать значение массива по значению.

Изменение

p->a=b;

В

for(int loop=0;loop < 100;++loop)
{
    p->a[loop] = b[loop];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...