Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/05/2012, 14:10
starfix
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: Pequeño error en ficheros

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.     char c;
  5.     int i=0, j=0;
  6.     FILE *fp1=fopen("archivo.txt", "r");
  7.  
  8.     while(j<8){
  9.  
  10.     c=fgetc(fp1);
  11.     i=ftell(fp1);
  12.  
  13.     printf("i:%d j:%d %d %c\n",i,j,c, c);
  14.  
  15.     j++;
  16. }
  17.  
  18.     system("PAUSE");
  19.     return 0;
  20. }

prueben ese codigo y van a ver tambien el valor de la variable j.

segun el razonamiento que segui (puedo estar equivocado), es que cuando fgetc lee el ultimo caracter de la cadena mueve el puntero 1 lugar hacia la derecha, es decir, se encuentra con el caracter de fin de cadena '\0' y lo ignora avanzando hacia el siguiente caracter y lo lee.... entonces, en ese momento, fgetc lee 2 caracteres, ignorando 1, por eso cada vez que se encuentra con el '\0' aumenta en 2 la posicion del puntero dentro del archivo, que es el numero que devuelve ftell...

espero haberme explicado bien :).
saludos