[C con Clase] leer cifras de un String

jferia en uci.cu jferia en uci.cu
Mar Oct 6 20:19:09 CEST 2009


Hola Abel, en C es algo complicado el trabajo con cadenas!, si la  
implementación fuese en C++ todo es más sencillo, de todas en formas  
en C puedes hacer algo como esto donde el resultado quedaría en la  
variable value lo cual puedes ir almacenanado en un arreglo o algo así!:
//Code

#include <string.h>
#include <stdlib.h>
using namespace std;

int main() {
	char str[] = "12,34,56,78,910,3,4,5,3,5,7,8,67,1,23,23,234,243,2,9";

	int cant = strlen(str);
	cout<<cant<<endl;

	int i = 0;
	char *temp = new char[10]; int tempCant = 0;
	char *p = str;
	for(i = 0; i <= cant; i++)
	{
		char c = str[i];
		if(c == ',' || i == cant )
		{
			strncpy(temp, p, tempCant);
			p = &str[i+1];
			tempCant = 0;
			int value = atoi(temp);
			delete temp;
			temp = new char[10];
		}
		else{
			tempCant++;
		}
	}

	return 0;
}


Saludos Jordenys.

email: jordenysp en gmail.com




Abel <aydabella en yahoo.com.ar> ha escrito:

> Hola,
> tengo el siguiente problema; resulta que en un String tengo   
> almacenado lo siguiente:
>
> char str[5000]="3245,4567,8945,67345,278936,213,......,2345";
>
> lo que quiero hacer es sacar cada una de esas cifras y convertirlas   
> a "int", hice lo siguiente:
>
> char *p, temp[10];
> int y[1001],i,j=0;
> for(i=0;i<=1000;i++)
> {
> p=str+n;
> while>(*(p+j)!=',')j++;
> strncpy(temp,p,j+1);
> n+=j+1;
> y[i]=atoi(temp);
> j=0;
> }
>
> mi problema conciste en que cuando "p" apunta al final del String   
> (ya no encuentra mas "comas", este se desborda y la máquina se cuelga.
> Alguien tiene alguna otra idea de como podría resolver este problema?
> Gracias por toda información.
> Saludos.
> Abel
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>







Más información sobre la lista de distribución Cconclase