<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hola, <br>
<br>
   Gracias a tu respuesta me he dado cuenta de que estaba usando mal
los punteros, pero me gustaría aclarar algo sobre la función fwrite y
fread. <tt><font><tt><font color="#008000">
<pre>size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
<tt><font><tt><font color="#008000"><pre>size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream</pre></font></tt></font></tt></pre>
</font></tt></font></tt>   En la referencia dice que los parámetros
son: ptr, size, count, stream y en ese orden. en donde:<br>
<br>
   ptr, es un puntero a una dirección de memoria con un tamaño mínimo
de size.<br>
   size, es el tamaño en bytes de los elementos que van a ser leidos o
escritos.<br>
   count, el número de elementos cada uno de ellos con el tamaño size.<br>
   stream, puntero a un objeto FILE en donde vamos a hacer la lectura o
escritura.<br>
<br>
   Según esto, lo que pones <br>
<pre wrap="">fread(rDatos,1,sizeof(rDatos),fDatos);</pre>
  
sería incorrecto ya que la forma correcta de hacerlo sería.<br>
<pre wrap="">fread(rDatos,sizeof(rDatos),1,fDatos);

<font face="Times New Roman, Times, serif">   Un saludo y muchas gracias por vuestro tiempo.</font>
</pre>
   Juan Antonio.<br>
<br>
Juan escribió:
<blockquote cite="mid:E1KnHVr-0000du-BC@arkanian.h3m.com" type="cite">
  <pre wrap="">Hola Juan Antonio, bueno tu codigo funciona, tienes algún error, te lo corrijo sobre el código: 



El pasado 2008-10-06 18:58:42, Juan Rubio escribió:
 
JR> Hola a todos,
JR>    Siguiendo con mis problemas con los archivos, estoy intentando que me
JR> abra una archivo cuando exista y que lo cree cuando no existe.
JR>    Tengo el ejemplo de abajo, y estoy observando que SIEMPRE me lo crea
JR> y me graba el registro.
JR>    Supongo que sabreis porque me pasa esto, supongo que estaré haciendo
JR> alguna burrada que no soy capaz de ver.
JR>    Muchas gracias.
JR> Juan Antonio.
JR>   
JR> #include <iostream>
JR> #include <stdio.h>
JR> #include <stdlib.h>
JR> using namespace std;
JR> int RutinaFichero()
JR> {
JR>    char rDatos[]="elemento primero";
JR>    char fichero[]="s:\\archivo.dat";
 Lo mas seguro es que no tengas la unidad s, sinó deberias crearla,
eso creo, prueba con char fichero[]="archivo.dat";
es para probar el código...
JR>    FILE *fDatos;
JR>    fDatos=fopen(fichero,"rb+");       // Lectura y escritura
JR> binario...no lo crea
JR>    if(!fDatos)                                  // Si no existe...
JR>    {
JR>       fDatos=fopen(fichero,"wb+");    // Crea el archivo si no existe.
JR>       fwrite(&rDatos,sizeof(rDatos),1,fDatos);
Aquí tienes un fallo: rDatos es un puntero, no hay que ponerle & y el orden debería ser al revés, pero elresultado es el mismo:fwrite(rDatos,1,sizeof(rDatos),fDatos)// modo correctoJR> cout << "grabo el registro"<< endl;             // las dos veces pasa
JR> por aqui...
JR>    }
JR>    fseek(fDatos, 1, SEEK_SET);
Aquí otro fallo, frwrite ha escrito en la posición 0:
fseek(fDatos, 0, SEEK_SET);//correcto

JR>    fread(&rDatos,sizeof(rDatos),1,fDatos);
Mismo fallo de antes:
fread(rDatos,1,sizeof(rDatos),fDatos);//correcto
JR>    fclose(fDatos);
JR>    return 0;
JR> }
JR> int main()
JR> {
JR>    RutinaFichero();
JR>    RutinaFichero();
JR>    return 0;
JR> }
JR> _______________________________________________
JR> Lista de correo Cconclase <a class="moz-txt-link-abbreviated" href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a>
JR> <a class="moz-txt-link-freetext" href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a>
JR> Bajas: <a class="moz-txt-link-freetext" href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a>


Una vez corregido esto, el programa funciona.
Juan
_______________________________________________
Lista de correo Cconclase <a class="moz-txt-link-abbreviated" href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a>
<a class="moz-txt-link-freetext" href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a>
Bajas: <a class="moz-txt-link-freetext" href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a>

  </pre>
</blockquote>
<br>
</body>
</html>