C/Visual C - Nombre variable dentro de un loop

 
Vista:

Nombre variable dentro de un loop

Publicado por Oscar (4 intervenciones) el 17/12/2013 18:55:22
Hola a todos,

tengo un loop dentro del cual me gustaría acceder a una variable en función del valor del iterador k

1
2
3
4
5
6
7
8
#define FIN = 2
char string0[20] = "Hola\n";
char string1[20] = "Prueba\n";
char string2[20] = "Que tal\n";
 
for(k = 0; k < FIN; k++) {
     printf("%s\n", string'k');
}

En otros lenguajes como java, se hace con "+", pero en C no parece tan sencillo...

Alguna idea?

Oscar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Nombre variable dentro de un loop

Publicado por Chema (234 intervenciones) el 18/12/2013 18:11:40
Un ejemplo con + como en Java y con K.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define FIN 6
#define K_MISTERIOSA  1
char st[] = "Hola\0"
			"lee algo y\0"
			"aprende\0"
			"tus dudas\0"
			"son muy\0"
			"simples\0";
 
int main(void){
	char *p;
	int i;
	p = st;
	for(i = 0; i< FIN; i++){
		printf("%s\n",p);
		p+= strlen(p)  +  K_MISTERIOSA ;
	}
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nombre variable dentro de un loop

Publicado por Oscar (4 intervenciones) el 18/12/2013 19:22:56
Gracias por la ayuda.

Por lo que veo lo que haces es un puntero que apunte a st y le vas incrementando la longitud del string i-esimo + 1.

strlen(p) te devuelve la longitud del string iésimo?, es decir, la primera vez la long de "lee algo y\0", la segunda vez la de "aprende\0", y así sucesivamente?

Gracias de nuevo
Un saludo

PD: Bonitos comentarios jeje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nombre variable dentro de un loop

Publicado por Chema (234 intervenciones) el 18/12/2013 20:39:12
Lo que solicitas es tan sencillo que me molesta resolverlo.
Comento el código para motivar tus ganas de aprender.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define K_MISTERIOSA  1
char st[] = "Hola\0"
			"lee algo y\0"
			"aprende\0"
			"tus dudas\0"
			"son muy\0"
			"simples\0";
 
 
int main(void){
	char *p;
	/*
               *p se deslaza al ultimo carácter +  /0, 
	*p apunta al primer carácter de la siguiente cadena
	*menos en el primer caso (lee algo y\).
                * strlen indica el número de caracteres
	*antes de /0 y sumandole 1 posiciona el puntero en el primer carácter de la siguiente cadena.
	*/
	p = st;
	/*Usar while() es posible gracias a que la cadena  (simples) termina con 2 0x0 (\0\0)*/
	while(*p){
		printf("%s\n",p);
		p+= strlen(p)  +  K_MISTERIOSA ;
	}
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar