Discussion:
No puede ser leida la direccion de memoria
(demasiado antiguo para responder)
AntyDesk
2003-11-01 20:00:38 UTC
Permalink
Al comppilar y ejecutar mi programa me saca un error de ejecucion de
la linea printf("%s", Line[0]); diciendome que no puede ser
leida la direccion de memoria.... como lo soluciono ?

int main(void)
{
FILE *FileBase;
char Line[100];
char *tmp;
FileBase = fopen(NameDB, "r");
if(FileBase == NULL) {
printf("%s %s", "Error: No se ha podido abrir el
fichero: " NameDB);
exit(1);
}
do {
tmp = fgets(Line, 100, FileBase);
if(tmp == NULL) {
fclose(FileBase);
exit(1);
}
printf("%s", Line[0]);
} while(tmp != NULL);
fclose(FileBase);
}


gracias de antemano....
Julián Albo
2003-11-01 20:08:37 UTC
Permalink
Post by AntyDesk
int main(void)
{
FILE *FileBase;
char Line[100];
char *tmp;
FileBase = fopen(NameDB, "r");
if(FileBase == NULL) {
printf("%s %s", "Error: No se ha podido abrir el
fichero: " NameDB);
exit(1);
}
do {
tmp = fgets(Line, 100, FileBase);
if(tmp == NULL) {
fclose(FileBase);
exit(1);
}
printf("%s", Line[0]);
} while(tmp != NULL);
fclose(FileBase);
}
%s es para escribir una cadena, pero lo que le estás dando en Line [0]
que es un caracter individual.

print ("%s", Line);

Salu2
AntyDesk
2003-11-01 22:17:19 UTC
Permalink
Post by Julián Albo
Post by AntyDesk
int main(void)
{
FILE *FileBase;
char Line[100];
char *tmp;
FileBase = fopen(NameDB, "r");
if(FileBase == NULL) {
printf("%s %s", "Error: No se ha podido abrir el
fichero: " NameDB);
exit(1);
}
do {
tmp = fgets(Line, 100, FileBase);
if(tmp == NULL) {
fclose(FileBase);
exit(1);
}
printf("%s", Line[0]);
} while(tmp != NULL);
fclose(FileBase);
}
%s es para escribir una cadena, pero lo que le estás dando en Line [0]
que es un caracter individual.
print ("%s", Line);
Salu2
ya pero yo lo que quiero es solo mostrar la primera letra de cada
linea, como lo puedo hacer ??


gracias de antemano....
RETECAL nos tima - MechaKaiser
2003-11-01 23:11:28 UTC
Permalink
Post by AntyDesk
Post by Julián Albo
Post by AntyDesk
int main(void)
{
FILE *FileBase;
char Line[100];
char *tmp;
FileBase = fopen(NameDB, "r");
if(FileBase == NULL) {
printf("%s %s", "Error: No se ha podido abrir el
fichero: " NameDB);
exit(1);
}
do {
tmp = fgets(Line, 100, FileBase);
if(tmp == NULL) {
fclose(FileBase);
exit(1);
}
printf("%s", Line[0]);
} while(tmp != NULL);
fclose(FileBase);
}
%s es para escribir una cadena, pero lo que le estás dando en Line [0]
que es un caracter individual.
print ("%s", Line);
Salu2
ya pero yo lo que quiero es solo mostrar la primera letra de cada
linea, como lo puedo hacer ??
gracias de antemano....
Prueba con printf("%c", Line[0]);
Winfree
2003-11-02 00:41:38 UTC
Permalink
Post by AntyDesk
ya pero yo lo que quiero es solo mostrar la primera letra de cada
linea, como lo puedo hacer ??
Para imprimir un caracter es %c
Fernando Arbeiza
2003-11-02 09:52:54 UTC
Permalink
Post by AntyDesk
Post by AntyDesk
int main(void)
{
FILE *FileBase;
char Line[100];
char *tmp;
FileBase = fopen(NameDB, "r");
if(FileBase == NULL) {
printf("%s %s", "Error: No se ha podido abrir el
fichero: " NameDB);
exit(1);
}
do {
tmp = fgets(Line, 100, FileBase);
if(tmp == NULL) {
fclose(FileBase);
exit(1);
}
printf("%s", Line[0]);
} while(tmp != NULL);
fclose(FileBase);
}
ya pero yo lo que quiero es solo mostrar la primera letra de cada
linea, como lo puedo hacer ??
#include <stdio.h>

/* .... */

fputc(Line[0], stdout);

Puedes poner una llamada a fflush para que el carácter aparezca cada vez
que lea una línea:

fflush(stdout);

Y dos cositas sobre el programa. La primera es que si hay líneas de más
de 100 caracteres de longitud, el programa no imprimirá sólo el primer
carácter de cada línea. Y otra es que el programa siempre acabará con
una salida de error, porque fgets devolverá NULL cuando haya acabado con
el fichero (por cierto, para indicar error tienes la macro EXIT_FAILURE,
más portable que 1).

Un saludo.
--
Fernando Arbeiza <URL: mailto:***@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
Loading...