2010-12-27 4 views
0

I définir une fonctiontableau Char en C

void add(char *key, char *value) { 
} 

Et j'ai une chaîne

char * message = "hello world" 

Je veux appeler ajouter ("bonjour", "monde"), donc j'écris

add(message[0,4], message[6, 10]) 

Cela ne fonctionne pas, je suis refusé avec le "char *" et "char array", qui peut expliquer pour moi?

Répondre

1

En C vous ne disposez pas de plages comme en Python.

Vous devez d'abord créer deux tableaux

char key[] = "Hello"; 
char value[] = "World"; 

vous les transmettre à votre fonction:

add(key, value); 

Si vous souhaitez copier une partie du message comme vous avez demandé, vous devez d'abord définir un assez grand tampon:

char buffer[100]; 
char buffer2[100]; 

puis vous copiez en utilisant strncpy() fonction déclarée en st header.h header.

strcnpy(buffer, message, 5); // copy Hello 
strcnpy(buffer2, message + 6, 5); // copy World 
0

message[0,4] n'est pas une syntaxe C valide. Vous devez confondre C avec une autre langue.

Si vous voulez faire des copies des parties de cette chaîne dans d'autres tableaux, vous pourriez envisager d'allouer de l'espace, puis de le mémoriser. Vous ne pouvez pas utiliser strcpy car la première partie ne serait pas terminée par un caractère nul. C n'a pas beaucoup de fonctions de manipulation de chaînes simples intégrées - vous devez faire de la place pour la chaîne, faire ce que vous voulez, et assurez-vous que tout est terminé à la main "à la main".

+0

droite, peut-être que j'ai besoin de memcpy? – why

+0

Il est valide, mais ne fait rien à distance de ce que vous voulez, et est tout à fait inutile. –