J'ai un projet, et on m'a donné un fichier d'en-tête qui contient:C Copie à un const char *
typedef struct User_struct {
const char *name;
Friends amigos;
} User;
Amis est un autre struct qui ne sont pas dans le cadre de ma question
En un fichier source que je dois créer, je fait une variable globale struct et ultérieure:
typedef struct UserList{
User *user;
struct UserList *next;
}UserList;
static UserList *users;
Il y a une fonction d'initialisation create_amigonet
dans laquelle j'allouer de la mémoire à users
et un Autre attribution à users->user
. Mon problème est avec cette fonction:
void addUser(const char *name)
{
UserList *new_users;
UserList *iter;
if(users->user->name == NULL)
{
users->user->name = malloc(strlen(name));
strncpy((users->user->name,name,strlen(name));
return;
}
for(iter = users; iter != NULL; iter = iter->next)
{
if(iter->user->name == name)
return;
}
new_users = malloc(sizeof(UserList));
if(new_users != NULL)
{
new_users->user = malloc(sizeof(User));
new_users->user->name = malloc(sizeof(name)+1);
strncpy(new_users->user->name,name,sizeof(name)+1);
new_users->user->amigos = NULL;
new_users->next = users;
users = new_users;
}
return;
}
J'ai besoin de copier un const char *
dans un const char *
, et je ne suis pas autorisé à modifier la définition de la structure de l'utilisateur ou la fonction. Je ne sais pas comment je suis censé copier/initialiser les noeuds dans ma structure. Je peux changer UserList
, qui est une structure que j'ai créée comme une liste liée des «utilisateurs».
'sizeof (nom) + 1' n'est pas la longueur de la chaîne, utilisez' strlen (nom) + 1' – ryanpattison
Merci. Je l'ai déjà remarqué et changé, mais c'est très apprécié! – mmf1102