Saludos, pues tengo un programa que lee de un archivo varias cadenas, estas tiene que sumar caracter por caracter su codigo ascii y luego sacarle modulo 131, por ejemplo: para la cadena enero los codigos son 101, 110, 101, 114 y 111 y la suma es 537 despues sacando modulo 131 sale 13
mi duda es en la siguinte parte:
.
.
suma=0;
while(!feof(archivo))
{
fscanf(archivo,"%[^\n]\n",cadena); //en esta parte lee cada cadena del archivo
for(i=0; i<6; i++)
{
suma=suma+cadena[i]; //aqui suma caracter por caracter
}
...codigo para mod...
}
.
.
en vez de poner el ciclo "for", que puedo poner para que sume hasta que sea el final de la cadena en turno?, en el for puse 6 por que estaba empezando con "enero" pero las siguientes cadenas de menor o mayor tamaño cambia el valor de la suma real de caracteres, intente poner un --while(cadena!='\0')-- en vez del for, pero se quedaba sin hacer nada, el codigo para el mod ya lo hice inclusive si me sale segun el ejemplo pero les repito en cadenas de diferente longitud cambia el valor real.
Las cadenas la declare de la siguiente forma por si eso tiene algo que ver con algun error que cometo al intentar hacer el while...
char cadena[15];
de antemano gracias por la ayuda, saludos. :P
Si cadena en un array de char o un puntero de char (char [] o *char) puedes usar la funcion strlen de la libreria string.h. Si tienes:
char c[5];
y el contenido:
c[0]='H'
c[1]='o'
c[2]='l'
c[3]='a'
c[4]='\0' o vacio
strlen(c) te devuelve 4.
He probado sprintf(c,"Hola\0") y sprintf(c,"Hola") y el strlen me devuelve 4 en los 2 casos.
Efectivamente, como ha dicho Maik33 puedes utilizar la función strlen y a partir de ahí ya lo puedes programar como un bucle for:
while(!feof(archivo))
{
fscanf(archivo,"%[^\n]\n",cadena);
l=strlen(cadena);
for(i=0; i<l+1; i++)
{
suma=suma+cadena[i];
}
}
o como un while
while(!feof(archivo))
{
fscanf(archivo,"%[^\n]\n",cadena);
l=strlen(cadena);
while(i<=l)
{
suma=suma+cadena[i];
i++;
}
}
Un saludo
Perdón si la pregunta es tonta pero... ¿Qué hace "fscanf"?
http://www.cplusplus.com/reference/cstdio/fscanf/
http://c.conclase.net/librerias/?ansifun=fscanf
se usa para archivos, fijate su primer parámetro
Vale, ya entiendo. ¿Hay algún "fcin"? O hay algún código equivalente a "fscanf" en ansi c++, o fscanf ya es parte del ansi de c++ y no hay ningún equivalente en c++?
PD: Muchas gracias por tomarte las molestias de buscar las referencias. :)
Un saludo.
Cita de: Almapa en 28 Marzo 2013, 12:04 PM
Cita de: Maik33 en 28 Marzo 2013, 08:53 AM
Listo ya quedo, ocupe el ciclo for que me habian mencionado, intente tambien con el while pero seguia sin hacer nada jajaja, pero con el for ya funciono, gracias por la ayuda, saludos. ;-)