Domingo 15 de Diciembre de 2024, 07:38
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
No me deja leer del fichero.
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: No me deja leer del fichero. (Leído 2686 veces)
Aprendiz21Sam
Miembro activo
Mensajes: 32
No me deja leer del fichero.
«
en:
Jueves 13 de Mayo de 2010, 18:54 »
0
Buenas, tengo un problema para leer un archivo. El archivo está creado ("100%") seguro porque además lo he abierto con otro ejercicio, donde si puedo abrirlo en modo lectura.
Éste es el código...
Código: C
/*Cabecera de las bibliotecas de C*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
/*Variables globales*/
/*Declaración de Macors (#define)*/
#define Max 5
/*Cabecera de nuestras funciones*/
void
LeerFichero
(
)
;
void
GuardarBina
(
char
*
fCadena2
)
;
/*Programa principal*/
int
main
(
)
{
/*Declaración de mis variables principales*/
char
Cadena
[
1000
]
;
char
Opc
;
/*Inicialización de mis variables*/
/*Declaración de mis arrays*/
/*Parámetros de entrada*/
do
{
system
(
"cls"
)
;
printf
(
"n1.Leer del fichero"
)
;
printf
(
"n2.Salir"
)
;
Opc
=
getch
(
)
;
switch
(
Opc
)
{
case
'1'
:
LeerFichero
(
)
;
break
;
case
'2'
:
break
;
default
:
printf
(
"nOpcion incorrecta"
)
;
getch
(
)
;
}
}
while
(
Opc
!=
'2'
)
;
/*Algoritmo principal*/
/*Parámetros de salida*/
/*Otros parámetros*/
getch
(
)
;
return
0
;
}
/*Implementación de mis funciones*/
void
LeerFichero
(
)
{
FILE
*
Arc
;
int
i
;
int
Espacios
=
0
;
char
Cadena
[
Max
]
;
char
Opc
,
Opc2
;
do
{
system
(
"cls"
)
;
printf
(
"n1.Mostrar contenido del fichero"
)
;
printf
(
"n2.Mostrar numero de espacios del fichero"
)
;
printf
(
"n3.Salir"
)
;
Opc
=
getch
(
)
;
switch
(
Opc
)
{
case
'1'
:
if
(
(
Arc
=
fopen
(
"Fichero.txt"
,
"r"
)
)
==
NULL
)
{
/*Control del error en la apertura*/
printf
(
"nError en la apertura. Es posible que el fichero no exista"
)
;
}
else
{
while
(
!
feof
(
Arc
)
)
// Mientras no se llegue al final del archivo...
{
fgets
(
Cadena
,
5
,
Arc
)
;
printf
(
"n%s"
,
Cadena
)
;
getch
(
)
;
printf
(
"nSi desea guardarlo en binario pulse 1"
)
;
Opc2
=
getch
(
)
;
if
(
Opc
==
'1'
)
{
GuardarBina
(
Cadena
)
;
}
}
fclose
(
Arc
)
;
}
break
;
case
'2'
:
if
(
(
Arc
=
fopen
(
"Fichero.txt"
,
"r"
)
)
==
NULL
)
{
/*Control del error en la apertura*/
printf
(
"nError en la apertura. Es posible que el fichero no exista"
)
;
}
else
{
while
(
!
feof
(
Arc
)
)
// Mientras no se llegue al final del archivo...
{
for
(
i
=
0
;
i
<
Max
;
i
++
)
{
Cadena
[
i
]
=
fgetc
(
Arc
)
;
if
(
Cadena
[
i
]
=
32
)
{
Espacios
++;
}
}
}
fclose
(
Arc
)
;
}
printf
(
"nEl numero de espacios son: %d"
,
Espacios
)
;
break
;
case
'3'
:
break
;
default
:
printf
(
"nOpcion incorrecta"
)
;
getch
(
)
;
}
}
while
(
Opc
!=
'3'
)
;
}
void
GuardarBina
(
char
*
fCadena2
)
{
FILE
*
Arc
;
if
(
(
Arc
=
fopen
(
"EjercicioBin.txt"
,
"ab"
)
)
==
NULL
)
{
/*Control del error en la apertura*/
printf
(
"nError en la apertura. Es posible que el fichero no exista"
)
;
}
else
{
fwrite
(
fCadena2
,
sizeof
(
char
)
,
5
,
Arc
)
;
}
fclose
(
Arc
)
;
}
Cuando pulso la opción de mostrar el contenido, o la de mostrar el número de espacios me da un error de apertura, indicándome que es posible que el fichero no exista, pero eso no es cierto ya que con otro programa si me abre el mismo fichero.
Tweet
vite666
Nuevo Miembro
Mensajes: 13
Re: No me deja leer del fichero.
«
Respuesta #1 en:
Viernes 14 de Mayo de 2010, 06:50 »
0
tal vez por esta linea en donde "ab" no es un tipo valido de apertura
if((Arc=fopen("EjercicioBin.txt", "ab"))==NULL)
Aprendiz21Sam
Miembro activo
Mensajes: 32
Re: No me deja leer del fichero.
«
Respuesta #2 en:
Viernes 14 de Mayo de 2010, 09:15 »
0
"a" Abre un archivo existente para escritura en modo secuencial, añadiendo los
datos al final de los que haya. Si el archivo no existe, se crea.
"b" Abre en forma binaria.
Ese no es el fallo, además el fallo me lo da tanto al mostrar el array de caracteres como en mostrar el número de espacios.
No obstante, también puse "wb" (que no soluciona el código) y tampoco funciona la apertura.
Epa
Miembro MUY activo
Mensajes: 242
Nacionalidad:
Re: No me deja leer del fichero.
«
Respuesta #3 en:
Viernes 14 de Mayo de 2010, 14:36 »
0
Aunque decis que el archivos lo abris con otra aplicacion, probaste crear un nuevo archivo? o copiar el que tenes y cambiarle el nombre?
The sweet smell of a great sorrow lies over the land.
Aprendiz21Sam
Miembro activo
Mensajes: 32
Re: No me deja leer del fichero.
«
Respuesta #4 en:
Sábado 15 de Mayo de 2010, 10:08 »
0
Si, he probado todo eso y sigue sin abrirme el archivo. No entiendo por qué ocurre esto, nunca me había pasado y yo creía que controlaba bien la apertura de ficheros. No veo ningún fallo en el código y tampoco en la carpeta donde tengo todos los archivos.
NICOLASBLUES
Nuevo Miembro
Mensajes: 10
Re: No me deja leer del fichero.
«
Respuesta #5 en:
Sábado 15 de Mayo de 2010, 22:15 »
0
yo lo probé y anda joya tuve un problema con el switch pero como tengo linux no tengo "getch" fijate si el nombre del archivo esta perfectamente bien escrito por ahi en la carpeta lo tenes como "fichero.txt" ,osea , sin sin la "t" mayuscula , otra cosa que esta mal es cuando contas los espacios en el la comparacion del "if" solomente pones un solo "=" y termina contando 30 espacios...
Saludos Cordiales. El Nico
Aprendiz21Sam
Miembro activo
Mensajes: 32
Re: No me deja leer del fichero.
«
Respuesta #6 en:
Domingo 16 de Mayo de 2010, 16:48 »
0
Sí, lo del espacio ha sido un descuido que no me he dado cuenta porque no ppdía abrir el archivo. Por todo lo demás está bien. Sigo sin saber por qué no podía abrir el fichero. Supuestamente tu sí puedes abrirlo así que el código no debe tener un error. He reinstalado el programa y ahora si me funciona. No se que podía estar pasando, si alguien le encuentra una explicación...
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
No me deja leer del fichero.