Ayuda C

Hola, yo estoy haciendo un pequeño leedor de archivos y he intentado hacer esto de muchas formas pero no he podido, yo creo que esta sería la manera pero no me sale, espero que me puedan ayudar.
char texto[10000];
char a[576];
u32 nt = 0;
u32 p = 0;
u32 n = 0;
char nada = 0

while (0 == 0)
{
if (texto[nt] == nada) break;
a[n] = texto[nt];
if (n = 576) break;
n++;
nt++;
   }      



Esto lo que quiero que haga sería que la variable "a" sea igual a la variable "texto" hasta la letra numero 576 pero no se porque no funciona.
Espero que me puedan ayudar.
Prueba con: (aunque no estoy NADA seguro)
char texto[10000];
char a[576];
u32 nt = 0;
u32 p = 0;
u32 n = 0;
char nada = 0

while (0 == 0)
{
if (texto[nt] == nada){
break;
a[n] = texto[nt];
}
if (n == 576){
break;
n++;
nt++;
}
   }     
Gracias pero no me funciona, lo siento.
Otra cosa, si no me lo sabéis solucionar me podríais decir como se usa la funcion de c substring en palib?
pero no se puede usar fopen, fscanf, etc??
Te explico cómo va:

char texto[10000];
char a[576];
u32 nt = 0;
u32 p = 0;
u32 n = 0;
char nada = 0   // Aquí falta puntero / array

while (0 == 0)
{
if (texto[nt] == nada) break;
a[n] = texto[nt];
if (n == 576) break; //Aquí el igual es doble
n++;
nt++;
   }     


Por lo que veo aprendiste algo más de C. Menos mal xDD Mírate los tutoriales de PAlib que te enseñan muchas cosas. Aunque parezca algo novato, si te pasas seguro que aprendes mucho. Saludos ;D
Explícate un poco mejor, que no acabo de entender qué quieres hacer xD
Un fallo que tienes es que haces la iteración con n a 576, lo cual accede a a[576], posición que no existe, pues solo están las posiciones desde la a[0] hasta a[575], por ello, seguramente te diese un coredumped.

De todas formas, esto se hace mucho más comodo con un for en vez de un while.
char texto[10000];
char a[576];
u32 nt = 0; //Puesto que n y nt aumentan a igual, con usar n nos vale.
u32 p = 0;
u32 n = 0;
char nada = 0; //Caracter nulo supongo.

for (n = 0; n < 576; n++) { //Desde n = 0 hasta n < 576, aumentar n en 1 y repetir el bucle

    if(texto[n] == nada) //Esto supongo que lo haces para comprobar si hay valores
        break;                //incorrectos...

    a[n] = texto[n]; //n nos vale para a y texto, pues n y nt siempre valen igual.
}



También te dejo una modificación del tuyo

char texto[10000];
char a[576];
u32 nt = 0;
u32 p = 0;
u32 n = 0;
char nada = 0

while (n < 576) //Mientras n sea menor que 576
{
  if (texto[nt] == nada)
      break;

  a[n] = texto[nt];
  n++;
  nt++;
}     
Grax "elchicosinhada" y "alexpowerup", estoy de vacaciones y no lo puedoi probar pero ya lo probare.
Estoy haciendo un pequeno navegador de texto un poco para aprender pues no se mucho, por eso suelo utilizar el foro.
Grax Un saludo, JJDT
Haz un pong en NDS y saca experiencia de ahí ;D Suerte y saludos!
8 respuestas