2013-04-01 5 views
0

Je suis nouveau à C, et j'ai un peu de mal à trouver la façon exacte de le faire.Comment est-ce que je parcours à travers un pointeur vers un tableau char en C?

J'ai besoin de parcourir une chaîne de caractères et de stocker chaque lettre une à la fois afin de la déchiffrer.

donc ce que je fais est:

# 1. Création d'un emplacement pour stocker la chaîne:

char toDecrypt[] = node->string; 

# 2. Démarrage de la boucle:

for(int m=0; m< strlen(toDecrypt); ++m) 

# 3. Stockage du char (à déchiffré plus tard):

char i = toDecrypt[m]; 

est valide ci-dessus, ou devrais-je donc utiliser une notation différente pour stocker correctement le charbon?

EDIT:

Ok, je pense avoir éclairci que, donc je dois juste une question de suivi.

Comment vérifier si un caractère est un "\"? Mon chèque ne semble pas fonctionner.

Quand je mets

toDecrypt[m] != '\'; 

dans une instruction if, cela ne fonctionne pas ...

+0

# 2: vous évaluez la longueur de la chaîne pour chaque itération dans la boucle 'for' - je préfère utiliser 'for (int m = 0, int L = strlen (àDécrypter); m

+2

Échapper à la barre oblique inverse, ''\\' '. –

Répondre

1

Définissez votre variable char *toDecrypt = node->string;

Vous serez toujours en mesure d'utiliser la notation [] à lisez/écrivez-le si vous le souhaitez.

0

Ceci est wrong: char toDecrypt[] = node->string;

Vous pouvez résoudre de manière suivante:

char *toDecrypt = node->string; 

ou

char *toDecrypt=(char*) malloc (strlen(node->string)+1); 
strcpy(toDecrypt,node->string); 
0
  • Création d'un endroit pour stocker la chaîne:

Vous avez déjà un endroit pour stocker la chaîne. node->string stocke la chaîne très bien. Vous pouvez simplement créer un pointeur pour pointer vers elle:

char *toDecrypt = node->string; 

ou si vous voulez un endroit pour le copier, vous pouvez faire un tableau:

char toDecrypt[enough_space_for_the_string]; 

// or do it dynamically with: 
//  char * toDecrypt = malloc(enough_space_for_the_string); 
//  just don't forget to free() it later 

strcpy(toDecrypt, node->string); 
  • Comment puis-je vérifier pour voir si un char est un "\"? Mon chèque ne semble pas fonctionner.

La barre oblique inverse est un caractère d'échappement en C, donc si vous voulez vérifier une barre oblique inverse, vous devez utiliser le bon escape sequence:

toDecrypt[m] != '\\'; 
Questions connexes