Primeros pasos con C

Srednuht

Buenas, a ver, la cosa seguro que es muy simple, resulta que necesito crear un fichero con el nombre hola.txt, que en la primera linea contenga Buenos Dias, en la segunda 131x62 y en la tercera 8122....

Yo he probado con esto:

spoiler

La cosa es que con esto, consigo que se cree un archivo llamado hola.txt, pero Buenos dias, 131x62 y 8122 se escriben en la pantallita negra... :/

Ayuditas? Gracias xD

cabron

printf sirve para escribir en la salida estándar del sistema, (que suele ser la consola)

Tienes que usar fprintf

Srednuht

Vale pero para usar fprintf antes he de meter algo no?

fprintf( descriptor_de_fichero, “formato”, lista_de_valores);

A VER ese es el formato estandar, pero , en mi caso que tengo que poner

fprintf( fichero, "Buenos dias", "Y AQUI QUE?);

???

THANKS!

LOc0
fprintf(fichero, "Buenos días\n");

Tal cual.

Salu2 ;)

B

#3 Como te ha dicho #4, si miras el man, ... indica que los argumentos que se le pueden dar a fprintf y printf son opcionales, tantos como quieras, siempre que esten indicados dentro de formato.

Y tienes que pasar un FILE* no un descriptor de fichero.

PD: es una buena practica devolver todos los recursos que adquieres, asi que no vendría mal hacer un fclose.

blademan99

Buscando por practicas de años pasados de la universidad e encontrado esto... espero que te sirva.
Es un pequeño ejemplo de como trabajar con ficheros.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
int i,num,x;
char nombre[20];
char nfichero [20];
char registre [20][20];

FILE *fp;
	
printf("Escribe el nombre del fichero:");
scanf("%s",nfichero);

do
{
	printf("Introduce el numero de nombres que quieres introducir en el fichero:\n");
	scanf("%d",&num);
}while(num <= 4);

fp = fopen("nfichero.txt","w");	
if(fp == NULL)	
	printf("No se a podido abrir el fichero\n");
		
for (i=0;i<num;i++)
{
	printf("Introduce nombres para 5 alumnos\n");
	printf("Introduce el nombre de alumno %d: ",i);		
	scanf("%s",nombre);
	fprintf(fp,"%s\n",nombre);
}

i = 0;
while(!feof(fp))
{
    fscanf(fp,"%s",registre[i]);
    printf("El nombre es.....%s\n",registre[i]);
    i++;
}
fclose(fp);	
system("pause");		
	
return 0;

}

Srednuht

Gracias a todos, pero nada, he ejecutado como administrador el codeblocks por si acaso era eso pero nada, si, me crea el fichero ( y con tu script #6 tambien me lo crea), pero no escribe nada dentro, y eso es lo que necesito :_ .....alguna idea?

gonya707

deberias espedificar que quieres abrir el fichero para escribir en modo texto:

spoiler
NeB1

#7 solo se me ocurre que sea lo que dice #8 ...
pero #8, si no lo abre en modo escritura, no lo crearía en caso de existir, no?? quiero decir, que si lo estuviese abriendo en modo lectura no debería ni siquiera crearle el fichero, nu? (hace muchos años que no toco C, igual me estoy patinando).

#5 Creia que un FILE * era un descriptor de fichero :S:S:S:S:S

#7 Al final será que estás haciendo mal alguna gilipollez. Puedes poner tu código entero?

B

#9 Las funciones que llevan f, que son de la biblioteca de c y te permiten usar streams de fichero, son un wrap de servicios de unix, que si son los que usan los descriptores de fichero.

Si sigues teniendo problemas postea aqui lo que estas haciendo, pero no tendrias por que tener ninguno con lo que te han dicho.

blademan99

¿Has probado a añadir las librerias que puse en el ejemplo? Que no sea por eso....

angelorz

#1 haz lo que dice #11. Si no tienes añadidas las librerías en las cuales se encuentran las funciones fprintf, fscanf, fopen... no te van a funcionar.

Incluye ambas: <stdlib.h> y <string.h>

Si no te funciona así vuelve a postear xD

NeB1

Entonces le debería saltar errores de compilación en lugar de ejecutarse y crear un fichero vacío, no?

angelorz

En principio o error o warning. Si te da un warning y no tienes activado que te los muestre pues... a tomar por saco xD

Pero sí, en principio no tiene sentido que le deje compilar.

Srednuht

A ver, voy a probar todo y luego posteo, no penseis que paso de lo que decis xD Gracias

#8 Funciona gracias, arreglado, lo qu eno entiendo es porque yo lo puse asi, y no me iba y ahora si :_ no se si es un tema de espacios porque yo ponia fprintf( y tu tienes fprintf con una tabulacion, supongo que ese era el error... graciaS a todos!

NeB1

#15 wat? no entiendo lo que dices de la tabulación o del espaciado, pero me extraña que sea la fuente del problema.

Es más factible que tuvieses algún error tonto y no te dieses cuenta

angelorz

#15 si no te tabula automáticamente, es porque hay algún corchete o paréntesis que te has olvidado cerrar.

Srednuht

#16 #17

Pues ayer yo puse :

fprintf(fichero, "ededwedwejdwie\n");

y me daba error :_ de todas formas, gracias!

angelorz

#18 repito, puede ser porque abriste corchete y se te olvidó cerrarlo o porque no has incluído la librería necesaria.

Incluye en el fichero:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

Srednuht

#19

No, si ya funciona a la perfeccion, y con <stdio.h> sobró. Gracias

B

20 mensajes y hay 100000 ejemplos en google a un click :S

angelorz

2 años estudiando C y me acabo de enterar de que fprintf está incluída en la <stdio.h> xD

Sabía que printf sí, pero pensaba que como fprintf implica el manejo de ficheros, necesitaba <stdlib.h> para funcionar.

^^ Nunca se acuesta uno sin aprender algo nuevo :P

B

stdio = standar input/output. El nombre lo dice :S

angelorz

#23 standar. La salida standar es la pantalla, no un fichero. Con fprintf se puede imprimir tanto en pantalla (stdout) como en fichero. Por eso dudaba que estuviera en stdio.h ^^

B

Un printf es un fprintf con fichero el stdout.

BLZKZ

#24 no te confundas, la salida standar no es la pantalla (pantalla, fichero o impresora son algo que asignas despues con el comando) en c++ está mas claro porque se habla de streams o flujos de entrada (salida)

saludos

tigurius

Diu! ahora he empezado yo con esto jajaja,

es un poco "cansino" la programación en C, pero claro esta, siempre mejor que la Binaria XD

B

¿Programación binaria? xD Algún día nos explicarás...

tigurius

#28 sabes perfectamente que me refiero al codigo binario. XD

NeB1

#29 programas escribiendo en binario Oo?

Usuarios habituales