Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/01/2009, 16:41
Avatar de calathea
calathea
 
Fecha de Ingreso: octubre-2008
Ubicación: Valladolid
Mensajes: 122
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: ¿Cómo recorrer una cadena con C?

es una cadena de caracteres y numeros o solo de numeros??

si solo son numeros, porque usas una cadena char en vez de un array int??

de todas formas, tengo entendido que los numeros guardados como char no son exactamente ese numero...me explico:

si recoges un 0 introducido por teclado y lo almacenas en una variable char...cuando lo pretendes imprimir por pantalla sale el numero 48 (si mal no recuerdo)

por tanto, si lo que almacenas en la cadena char son numeros, al ir a buscarlos introduciendo tu por teclado el que quieres encontrar en la cadena, no lo encuentras, pues en la cadena tienes almacenados los numeros a los que corresponden los caracteres numericos

Os adjunto un código en el que se ve lo que os digo si se depura.

Código:
#include <stdio.h>
#include <stdlib.h>

void main()
{
	int encontrado = 0, i = 0;
	char cadenaNumeros[10];
	int num, posicion = 0;

	printf("Introduzca una cadena de numeros: ");
	gets(cadenaNumeros);
	printf("\n\nIntroduzca un numero de una cifra: ");
	scanf("%d", &num);

	do
	{
		if(cadenaNumeros[i] == num)
		{
			encontrado = 1;
			posicion = i + 1;	//porque el vector empieza en cero, 
								//por lo que la posicion 1 de la 
								//cadena corresponde a la 0 del vector
		}
		i++;
	}while(!encontrado && i<10);  //La segunda condicion se debe a que el maximo valor del vector es 10

	if (encontrado)
	{
		printf("\n\nEl numero %d se encuentra en la posicion %d de la cadena", num, posicion);
	}
	else
	{
		printf("\n\nNo se encontro el numero indicado");
	}
	system("Pause");
}
Espero que os sirva de algo!

EDITO!

Cita:
haces el bucle, pero cuando comparas lo haces con comillas es decir cadena[i]=='1',porque me imagino que recojiste la cadena como caracteres
No me di cuenta de lo de las comillas, lo siento, a eso es a lo que me refería yo con mi parrafada...perdon :S

Última edición por calathea; 14/01/2009 a las 16:46 Razón: UUPPS