Foros del Web » Programación para mayores de 30 ;) » C/C++ »

interpretar una linea de codigo

Estas en el tema de interpretar una linea de codigo en el foro de C/C++ en Foros del Web. tengo una duda de interpretacion si en mi codigo dice FILE *pf while(!feof(pf))//mientras no se el fin del archivo se hace lo q esta en ...
  #1 (permalink)  
Antiguo 07/11/2011, 21:49
 
Fecha de Ingreso: septiembre-2011
Mensajes: 25
Antigüedad: 12 años, 7 meses
Puntos: 0
interpretar una linea de codigo

tengo una duda de interpretacion

si en mi codigo dice

FILE *pf
while(!feof(pf))//mientras no se el fin del archivo se hace lo q esta en el while


AHORA si dice

if(!pf)
pf=fopen("prueba.txt","w+b")
//segun mis notas esto lo que hace es que crea el fichero en el caso que no exista

LA PREGUNTA ES que quiere decir el if(!pf)
  #2 (permalink)  
Antiguo 08/11/2011, 01:38
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: interpretar una linea de codigo

El operador ! indica negación. Así, en tu caso, si pf==NULL (no se ha abierto el fichero, luego pf sería FALSO), entonces !pf es VERDADERO y se ejecutará el código del if (en tu caso, la apertura del fichero). Resumiendo: if (!pf) significa "Si el puntero pf es nulo..."

Ojo con esto, porque la simple declaración de una variable no te garantiza que se inicie automáticamente a valor cero (o a valor nulo, en el caso de punteros). Eso es algo que depende del compilador. En el mejor de los casos, se te iniciarán a cero (o nulo) aquellas variables que declares como globales (fuera de las funciones). Las que declares localmente dentro de una función, dado que se crean en el momento de entrar a la función y se destruyen al salir de ella, tomarán un valor aleatorio, dependiendo de lo que hubiera en la memoria que se les asigne.

Para evitar problemas, no hagas comprobaciones en variables que no hayas iniciado tú con algún valor, el fiarse del posible resultado de estas comprobaciones puede conducir a un comportamiento errático del programa, o al desastre si se trata de punteros.

Etiquetas: interpretar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:59.