• Miércoles 6 de Noviembre de 2024, 13:29

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Bool

Páginas: [1]
1
C/C++ / ferror en linux
« en: Viernes 3 de Octubre de 2008, 09:41 »
Tengo este código:

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7.     FILE *pf = NULL;
  8.     char *cadena = "esta cadena nunca sera escrita";
  9.  
  10.     if ((pf = fopen("datos", "r")) == NULL)
  11.     {
  12.         perror("datos");
  13.         return EXIT_FAILURE;
  14.     }
  15.     fprintf(pf, "%sn", cadena);
  16.  
  17.     if (ferror(pf))
  18.     {
  19.         perror("Error al escribir en el fichero");
  20.         clearerr(pf);
  21.     }
  22.     fclose(pf);
  23. }
  24.  
  25.  
  26.  

Con code:blocks en windows va perfecto, sin embargo en mi linux con gcc, el segundo perror no lo ejecuta... asi  que ferror siempre devuelve un cerapio :S

Alguién sabe por qué no puede funcionar?

Venga, gracias anticipadas :)

2
C/C++ / Re: Duda con int ** en matriz dinámica
« en: Miércoles 1 de Octubre de 2008, 03:30 »
Juas que zoquete me siento... mira que no haber visto el fallo, para matarme  :(

Muchas gracias por la ayuda  :beer:

3
C/C++ / Duda con int ** en matriz dinámica
« en: Martes 30 de Septiembre de 2008, 21:26 »
Tenemos creado en memoria (con malloc) esté array dinámico cuyos elementos son de tipo enteros:
Código: Text
  1.  
  2. 2 3
  3. 1 4
  4.  
  5.  
El proceso de creación ha sido... asignamos memoria para un vector de punteros a enteros... algo así como:
Código: Text
  1.  
  2. int **pam = (int **)malloc(2 * sizeof(int *));
  3.  
  4.  
y luego asignamos memoria para cada fila del array:
Código: Text
  1.  
  2. for (i = 0; i < 2; i++) {
  3.     pam[i] = (int *)malloc(2 * sizeof(int));
  4.  
  5.  
también hay una variable tipo estructura cuya definición es:
Código: Text
  1.  
  2. typedef struct matriz
  3. {
  4.     int filas;
  5.     int columnas;
  6.     int **pmatriz;
  7. }tmatriz;
  8. tmatriz var1;
  9.  
  10.  
esta estructura tiene los datos de la matriz dinámica que se ha creado.

si tenemos un puntero que apunta a var1...
Código: Text
  1.  
  2. tmatriz *pvar1 = &var1;
  3.  
  4.  
podemos saber las filas del array haciendo por ejemplo...
Código: Text
  1.  
  2. printf("%d", pvar1->filas));
  3.  
  4. pvar1->pmatriz apuntaría a pam
  5.  
  6.  
Entonces, si quiero leer datos de la matriz podría hacer un bucle así:
Código: Text
  1.  
  2. for( i = 0; i < pvar1->filas; i++) {
  3.     for(j = 0; j < pvar1->columnas; j++) {
  4.         printf("%d", pvar1->pmatriz[i][j]);
  5.        
  6.  
Pero si quiero introducir datos nuevos en mi matriz dinamica, a la hora de leer con:
   
Código: Text
  1.  scanf("%d", pvar1->&matriz[i][j]);
  2.  
   
El compilador se queja :(
 
lo que he hecho es declarar una nueva variable de tipo puntero a puntero a entero y que
 contenga la dirección de memoria de pvar1->pmatriz, y luego meter los datos usando esa nueva variable
 evitando tener que usar la notación con la estructura. Es decir, algo así:
 
Código: Text
  1.  
  2.  int **pmat2 = pvar1->pmatriz;
  3.  
  4.  
 y Luego ya puedo hacer esto
 
Código: Text
  1. scanf("%d", &pmat2[i][j]);
  2.  
 
 Mi duda es como hacerlo de la primera forma, es decir así:
 
Código: Text
  1. scanf("%d", pvar1->&matriz[i][j]);
  2.  
pero correctamente claro xD
 
 Perdón por el rollo; espero que se entienda algo jaja
 
 Gracias anticipadas!

Páginas: [1]