Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NOB2014

#91
Siiiiiiiiiiiiiiiiiiiiiiiiiiii, sublime, maravilloso, eso es lo que quería. -
No teneos una idea como me aclararte las cosas, ahora algo más que quiero que me digas si es posible:
En esta llamada a función, puedo pasar parámetros.

b(a());

#92
#include <stdio.h>
     
char a();
void b( char dos );
     
int main(void){
     
b(a());
   
return 0;
}

char a() {
char dos[] = "dos";
printf("frase uno = %s\n\n", "uno");
return dos;
}

void b(char dos) {
    printf("\n frase dos = = %s\n\n", dos);
}


Citarrepaso.c: In function 'a':
repaso.c:16:2: warning: return makes integer from pointer without a cast [enabled by default]
  return dos;
  ^

Citarrepaso.c:16:2: warning: function returns address of local variable [-Wreturn-local-addr]
repaso.c: In function 'b':
repaso.c:20:5: warning: format '%s' expects argument of type 'char *', but argument 2 has type 'int' [-Wformat=]
     printf("\n frase dos = = %s\n\n", dos);
     ^

Esto es exactamente como quiero que quede el código, sin errores claro. -

Un abrazo amigo y gracias por ocuparte. -
#93
Hola. -
Tanto practicar llegue a la conclusión que lo que me funciona como lo que yo esperaba es el código de MAFUS, (no deseo con esto ofender ni menospreciar al resto que deseo ayudarme) pero igual desearía que alguien me pase el código que muestro a continuación a cadena, o sea, que en vez de mostrar 1 y 2 muestre uno y dos. -
Estuve practicando un rato largo y me da demasiados errores, hasta utilice malloc y nada. -

#include <stdio.h>
     
int a();
void b(int num);
     
int main(void){
     
b(a());
   
return 0;
}

int a() {
printf("num = %d\n\n", 1);
return 2;
}

void b(int num) {
    printf("num = %d\n\n", num);
}
   


desde ya muchas gracias, si es mucho pedir, disculpas. -
Saludos.
#94
Que me imprima "Uno" y en la línea siguiente "dos"
#95
Hola a todos.
MCKSys Argentina, gracias por la página que me apuntaste, pero todavía no si es lo que busco. -
dato000 me resulta lo mismo que antes, compila perfecto, pero me imprime solamente Uno. -

Saludos.
#96
Hola, Arturo400. -
Si bien no me da error sólo imprime Uno y no Uno y dos.

#97
Hola, que tengan un muy buen día.
En mi post anterior utilice este tipo de llamada a función y todo correcto, pero ahora no logro que funcione, reconozco que si leyera en inglés tal vez podría saber el porqué del error pero recién estoy comenzando con el idioma. -

#include <stdio.h>

void uno( );
void dos( );


int main(void){

uno( dos() );

return 0;
}

void uno(  ){
printf( "\n Uno " );
}

void dos(  ){
printf( "\n dos" );
}


Saludos y desde ya muchas gracias. -
#98
Hola. -
una consulta, si tengo un archivo con palabras desordenadas y luego las ordeno en un arreglo de estructura, como debo hacer para escribir en el archivo nuevamente, tengo que borrarlo primero o puedo sobrescribir registro por registro. - 


desde ya muchas gracias.
#99
Hola. -
alberto creo que el problema era la apertura del archivo y en realidad nunca se ejecutaba el bucle, después de tanta práctica logre hacer que funcionara pero o sorpresa cada vez que tenia que modificar el orden de la palabra grabada en el archivo se duplicaba y en realidad lo que necesitaba era modificarla, ahora el problema que tengo es que no logro regresar el puntero file al comienzo de la  linea donde está parado para modificarla/sobre escribirla. -

file -= sizeof( Idiomas ); //es algo que se me antojo de tanto practicar, pero no me funciono. -

¿Me podrían decir porque la siguiente línea no mueve el cursor del archivo al comienzo de la misma?

fseek(file, -1L*sizeof(Idiomas), SEEK_CUR);

void guardar( Idiomas idiomas, char *nombreArchivo, long numeroRegistros ){
FILE *file = fopen( nombreArchivo, "a+b" );
int i=0;

if( file != NULL ){
numeroRegistros += 1;

if( numeroRegistros > 1 ){
Idiomas tmp;
tmp.habilitado = idiomas.habilitado;
strcpy( tmp.ingles, idiomas.ingles );
strcpy( tmp.espaniol, idiomas.espaniol);
tmp.orden = 1;

fseek (file, 0L, SEEK_SET);
while( fread( &idiomas, sizeof(Idiomas), 1, file) ){
i = strcmp( tmp.ingles, idiomas.ingles );
if( i < 0 ){
idiomas.orden += 1;
printf("\n antes...: %p", file);
file -= sizeof( Idiomas );
// fseek(file, -1L*sizeof(Idiomas), SEEK_CUR);
printf("\n despues.: %p", file); getchar();
fwrite( &idiomas, sizeof(Idiomas), 1, file );
}else{
tmp.orden += 1;
}
}
fwrite( &tmp, sizeof(Idiomas), 1, file );
}else{
idiomas.orden = 1;
fwrite( &idiomas, sizeof(Idiomas), 1, file );
}
}else{
printf( "\n Error al abrir %s para escritura/lectura. Finaliza el programa.", nombreArchivo );
}

fclose( file );
}

Saludos.
#100
Hola, a todos. -
Créanme que probé de muchas maneras pero no me funciona, el error lo tengo en el último campo, no puedo hacer que se modifique, les dejo solamente la función guardar para no hacerlo tan largo, descarto que alguien de Uds. me podrá dar la solución sin tener que correr el programa. - 
Alberto me interesa lo de la búsqueda casi binaria, lo voy a practicar. -

void guardar( Idiomas idiomas, char *nombreArchivo, long numeroRegistros ){
FILE *file = fopen( nombreArchivo, "ab" );
Idiomas tmp;
tmp.habilitado = idiomas.habilitado;
strcpy( tmp.ingles, idiomas.ingles );
strcpy( tmp.espaniol, idiomas.espaniol);
tmp.orden = 1;


if( file != NULL ){
numeroRegistros += 1;

if( numeroRegistros > 1 ){
fseek( file, 0, SEEK_SET );
while( fread( &idiomas, sizeof(Idiomas), 1, file )){
if( strcmp( tmp.ingles, idiomas.ingles ) < 0 ) {
idiomas.orden += 1;
fwrite( &idiomas, sizeof(Idiomas), 1, file );
}else{
tmp.orden += 1;
}
}
}
fwrite( &tmp, sizeof(Idiomas), 1, file );
}else{
printf( "\n Error al abrir %s para escritura/lectura. Finaliza el programa.", nombreArchivo );
}

fclose( file );
}




Saludos y desde ya muchas gracias. -