2011-10-08 2 views
0

Puis-je faire un tel code:peut-il affecter la chaîne char * lors de l'exécution

char *p; 
p = User_input; 

Est-il possible d'assigner une chaîne à p lors de l'exécution?

+2

Vous pouvez placer le point 'p' sur une chaîne existante en définissant' p' comme un pointeur sur le premier caractère de cette chaîne. Mais avant de pouvoir obtenir des informations de la part de l'utilisateur, vous devrez probablement allouer de la mémoire pour obtenir l'entrée. –

Répondre

1

Bien sûr, vous pouvez, mais il n'y a pas string en c, je pense que vous voulez dire char *, comme

char *user_input = malloc(128); 
scanf("%s", userinput); 
p = user_input; 
1

Vous devez allouer la mémoire avec malloc. Ensuite, vous pouvez utiliser strcpy pour assigner une chaîne à la mémoire allouée.

1

Bien sûr, vous pouvez. Notez que cette affectation copie uniquement le pointeur (l'adresse) vers la nouvelle variable. Il ne copie pas la chaîne elle-même.

Vous avez d'autres options si ce n'est pas ce que vous MENT:

char buf[1000]; 

strcpy(buf, User_input); 

ou

char *p; 

p = strdup(User_input); 
1

Pour éviter buffer overflows with scanf dangereux. Utilisez fgets pour lire la ligne entière ou scanf avec un spécificateur de limite "%100s" par exemple.

char buffer[128]; 
scanf("%127s", buffer); 
char* my_input = strdup(buffer);