2012-02-29 3 views
-3

J'ai actuellement quelque chose de la formeC pointant le caractère ** vers une autre position de départ?

char** args = { "a", "s", "d", "f" }; 

Ce que je veux est

char** newArgs = { "s", "d", "f" }; 

Quelle est la meilleure façon de le faire?

Merci.

+0

Ce n'est pas valide C. Je suppose que vous devez avoir signifié 'char * args [] = { "a", "s", "d", "f"};'. –

Répondre

9

Peut-être ceci:

newargs = args + 1; 

Ou peut-être:

newargs = &args[1]; 
+0

merci beaucoup. Je sais que ce n'était pas la meilleure question ... – JDS

1

Vous pouvez simplement utiliser

newArgs = &args[1]; 
+0

S'il vous plaît, afficher une motivation lors de downvote ... – Saphrosit

+0

La motivation était, que votre première version était tout simplement faux. – Nobody

+0

@ Personne, j'étais trop rapide à taper. Je me suis corrigé en moins d'une minute de toute façon. Pas sûr que cela mérite 3 voix de moins ... – Saphrosit

3

Si vous voulez un ensemble indépendant de pointeurs:

char **newArgs = calloc(3, sizeof(*newArgs)); 
memcpy(newArgs, args + 1, 3*sizeof(*newArgs)); 

autrement:

char **newArgs = args + 1; 
+1

Pourquoi créer une copie? – ThiefMaster

+0

@ThiefMaster: Cela dépend du but. –

Questions connexes