No "sale bien" porque no indicas la anchura del campo "producto" (debes utilizar "%Ns") y si indicas en los demás campos que la anchura es cero (por ejemplo con "%0.0f") es igual a no indicarla.
Un saludo
Un saludo
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúfor (k = 0, j = 0; j < 5; j++) {
if (vec[i][j] != '\0') {
name[k++] = vec[i][j];
printf ("%c", vec[i][j]);
}
}
name[k] = '\0';
/* ... */
for (i = 0; i < 5; i++)
if (strcmp(nino, vec[i]) == 0)
printf ("El nombre %s si se encuentra en la lista\n", nino);
Cita de: eleon en 23 Enero 2012, 18:44 PMEl único contra que he encontrado es que si introduces un texto con espacios, no guarda lo que haya después de un espacio.Es correcto. En cuanto a leer una linea de texto puedes utilizar la función "getline", si necesitas ejemplos de su uso utiliza el buscador de los foros.
Mi duda es: ¿es correcto el uso de esta forma del "string"?
Cita de: eleon en 23 Enero 2012, 21:46 PMA ver si me podéis responder otra duda: en las tablas y strings ¿siempre hay que dejar un último elemento para la marca final (\0)?Solo si se trata de un array de caracteres (por ejemplo "char linea[100]") y en el se piensa almacenar una cadena (el '\0' indica el final de ella).
Cita de: eleon en 23 Enero 2012, 21:46 PMquiero decir, si queremos crear una tabla o un string de 30 elementos, hacemos "string cadena[30]", donde podemos usar los espacios del 0 al 29 (30 elementos) pero nunca el último (posición 30), ¿es asi?.Me parece una confusión:
string linea[100];
char nino[]="";
char nino[] = {'\0'};
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char cad[] =
"Solo es flufINICIOEste es el texto de pruebaFINsolo es fluf\n"
"Solo es flufINICIOFINsolo es fluf\n"
"Solo es flufINICIOEste es el texto de pruebaFINsolo es fluf\n"
"Solo es flufINICIOFINsolo es fluf\n"
"Solo es flufINICIOEste es el texto de pruebaFINsolo es fluf\n"
;
char *inicio = "INICIO";
char *fin = "FIN";
int main(void)
{
size_t len_inicio;
size_t len_fin;
char *p;
char *q;
len_inicio = strlen(inicio);
len_fin = strlen(fin);
p = cad;
while ((p = strstr(p, inicio)) != NULL){
p += len_inicio;
if ((q = strstr(p, fin)) != NULL){
if (q > p)
printf("%.*s\n", q - p, p);
p = q + len_fin;
}
}
return EXIT_SUCCESS;
}
Cita de: Metal-byte en 22 Enero 2012, 15:11 PMMi consulta es como quitarle o agregarle filas a esa matriz en tiempo de ejecución. Tengo entendido que puedo hacerlo mediante la función realloc, pero no entiendo como funcionaría en este caso (La he probado solo en arrays dinámicos, pero nunca en matrices :/)Si se reserva la memoria en la forma usual solo tienes que seguir la explicación de Akai teniendo cuidado de, si el numero de filas se reduce, primero liberar esas filas.
#include <stdio.h>
#include <stdlib.h>
#define NUM_FILAS 6
#define NUM_COLS 3
int main(void)
{
int (*p)[NUM_COLS];
int num_filas = NUM_FILAS;
int i;
int j;
/* Reserva y asignacion */
p = malloc(num_filas * sizeof *p);
for (i = 0; i < num_filas; i++)
for (j = 0; j < NUM_COLS; j++)
p[i][j] = 10 * i + j;
/* Impresion */
for (i = 0; i < num_filas; i++){
for (j = 0; j < NUM_COLS; j++)
printf("%3d", p[i][j]);
putchar('\n');
}
puts("---------");
/* Reajuste (Capacidad a la mitad) */
num_filas /= 2;
p = realloc(p, num_filas * sizeof *p);
/* Impresion */
for (i = 0; i < num_filas; i++){
for (j = 0; j < NUM_COLS; j++)
printf("%3d", p[i][j]);
putchar('\n');
}
free(p);
return EXIT_SUCCESS;
}