Programacion en Linux

bolo9tiko23

Bueno queria saber como se haria para hacer el siguiente ejercicio de programacion con ficheros.

Es programacion C. perdonar, no lo habia puesto
Tengo una variable llamada frase="Buenos dias";
y lo que hay que hacer es meterlo en un fichero todo en mayusculas, y despues imprimirlo para ver si h salido. No debe ser mmuy dificil, pero no me sale :s y tng mañana examen. Si sabeis como se hace ayudarme pls. Gracias
Os dejo mi ejercico mal echo, si veis algun fallo podeis decirmelo, gracias:

Creo k tiene k ser en bajo nivel :s

#include <stdio.h>
#include <ctype.h>
#include <fcntl.h>
#include <stdlib.h>

int main()
{
int pfich;
char frasem;
char frase='B';
if((pfich=open("exam.dat",O_RDWR|O_TRUNC|O_CREAT,0666))==-1);
{
printf("\nError al crear el fichero");
}
frasem=tolower(frase);
fprintf(" %s ",frasem);
close(pfich);
if((pfich=fopen("exam.dat","rb"))==NULL);
{
printf("\nError al leer el fichero");
}
printf("\n %s ",frasem);
close(pfich);
return(0);
}

VoLRaTh

En el fprintf no le deberias de pasar tambien como parametro el descriptor de fichero? Y despues a lo ultimo no lees el fichero, si no que imprimies directamente la variable que has creado conla frase, deberias de hacer un fread hasta que des con el final del fichero y despeus imprimir lo leido, lo cual vas guardando en un buffer.

Siento no poder ayudarte más.

B

mi amigo kaod m a dixo ke poste esto k sta blokeado !!

http://usuarios.lycos.es/clanics/lol.c

ArRiBa BlInK 182 !!

me a dixo ke como pista pa leer el fixero uses fread y k buskes en google pa ver como se ace porke asin como lo tienes tu no lo les

Me a dixo ke añada : "En el código usas tolower, pero en la descripción dices que se pasa a mayúsculas cuando tolower pasa a minúsculas. Para pasar a mayúsculas cámbialo por toupper. Por cierto, el bucle lo he hecho teniendo en cuenta la longitud de la cadena, pero se puede usar un while (frase) para que cuando llegue al caracter NULL de la cadena de C pare... Aunque seguramente de todo lo que te he dicho no te has enterado de nada. Como dicen por abajo, suerte para el examen, que la vas a necesitar, y mucho."

LiuM

Suerte en el examen que la vas a necesitar :P

VoLRaTh

No le deberiais ahber pasado el codigo hasta que no rebuscara mas.

bolo9tiko23

#5 calla anda
#3 en el codigo k me has pasado dices k no se abrir un fichero, si lo dices por esto: if((pfich=open("exam.dat","rw"))==NULL);
Nos han enseñado a abrir ficheros asi.

B

dice k no era de forma literal pero kemires como abres el fixero arriba y abajo, ke abajo usas el metodo que usa FILE y arriba usas el k lo guarda como int y aun asi usas la misma pa las dos

compara codigos el tuyo y el suyo

bolo9tiko23

como lo abro yo esta bien abierto, llevamos abriendo ficheros asi 2 meses...
Y salen bien.

B

va tio pues la proxima vez le pides ayuda a kien io se

joer si no te funciona i a kaod si, pos ostia sera k tu lo tiens mal ???'

VoLRaTh

Supuestamente estas estudiando en el EHU, quien te da operativos? XDD

bolo9tiko23

pero k no hay una unica forma de programar en c...

PD: Ya me funciona de mi forma...

javithelong

En tu primer fprintf te falta el descriptor de fichero, pero como lo has abierto con open y no con fopen, no tienes descriptor de fichero, sino que lo tienes referenciado con un int.

Tonces necesitas write, mirate en el man como va, es muy facil.

En tu segundo fprintf, tendría que ser un fread (para leer del fichero) y luego un printf (o fprintf a stdin) para ponerlo en la pantalla.
Pero como has abierto el fichero con open, no puedes usar fread, tienes que usar read a secas. Mirate el man, es facil tambien.

Todo esto suponiendo que el tolower funcione, que esa funcion no parece muy ansi ^^

B

"#12 lo mio compila perfectamente con gcc"
kaod dijo

EnTe

te deja compilar? porque con la variable FILE, tienes que asignarle puntero y normalmente C es muy quisquilloso con eso

B

¿Te parece poco poner un * delante del nombre de la variable?

Euh, alguien que llama variable a la declaración de tipo, y no se da cuenta de que el * designa un puntero... no debe saber mucho C... ¿Me equivoco, #14?

Si te estás refiriendo al código del #1, fíjate que ni pone en ningún momento FILE.

bolo9tiko23

el programa ya me funcionaba bien, haciendo algun pekeño cambio del #1.

PD: Me han preguntao en el examen este mismo ejercicio k os he preguntao :DDD.

Usuarios habituales

  • bolo9tiko23
  • bLiNk_RuLe2
  • EnTe
  • javithelong
  • VoLRaTh
  • LiuM