The UNIX and Linux Forums  

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de Alto Nivel
.
google unix.com



Programación de Alto Nivel Plantear preguntas acerca de C, C + +, Java, SQL, y otros lenguajes de programación aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
la comprobación de valor que no sea cero philplasma UNIX for Dummies Preguntas y Respuestas 6 01-08-2008 04:51 PM
control uid filthymonk Programación de scripts de shell y 7 07-19-2007 11:40 PM
Comprobación de los avances cp MarGur UNIX for Dummies Preguntas y Respuestas 0 05-15-2007 05:13 PM
Comprobación de PXE maestro @ Altiris Sun Solaris 5 05-25-2004 01:06 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 03-06-2008
ramkrix ramkrix is offline
Usuario Registrado
  
 

Fecha: diciembre 2007
Ubicación: Tamilnadu, INDIA
Puestos: 52
Exclamation A continuación el control de la EF

Hola,

Estoy practicando con programas de ejercicio del sistema de llamadas.

Ejercicio Pregunta: escribir un pogram a aceptar un nombre de archivo por parte del usuario. El programa debe escribir ecery quinto byte del archivo a la salida estándar.

Mi Programa:

# Include <stdio.h>
# Include <fcntl.h>
# Include <error.h>

main ()
(
int fd, first_offset \u003d 5, move_offset \u003d 0, x \u003d 1;
char a, nombre [20];
scanf ( "% s", nombre);

fd \u003d open (nombre, O_RDONLY, 0755);
printf ( "fd es% d", fd);

if (fd \u003d\u003d- 1)
(
printf ( "error");
exit (1);
)

while (x <5)
(
move_offset \u003d move_offset + first_offset;
lseek (fd, move_offset-1, 0);
leer (fd, nombre, sizeof (nombre));
escribir (1, nombre, 1);
x + +;
)
)


Salida:
[ramki @ lindesk3 sysint_ex] ex1.c $ cc-o ex1
[ramki @ lindesk3 sysint_ex] $ ./ex1
. / prueba
FIVEfd es de 3

El archivo "prueba" de contenido:
abcdFfghiIklmnVpqrsE



Ahora mi pregunta:
1. en el programa, he utilizado un bucle while varaible con una "X" y comparándolo con ningún azar de mi elección 5. Quiero que en lugar de comprobar la condición en la EF whilepart. Cómo comprobar que.
Si estamos usando el archivo puntero y fopen fn, podemos usar al mismo tiempo (feof (fp) \u003d\u003d 0). Pero aquí hemos utilizado syatem pide y yo no sé cómo comprobar el estado aquí.

2. Te en la salida del programa, he encontrado "cinco", antes de imprimir el número filedescriptor. Pero como por mi programa de flujo, fd debe imprimirse en primer lugar y luego la salida "CINCO".

3.Is Hay alguna othet forma de escribir el programa más sencillo y preciso, sobre todo utilizando piointer para obtener el nombre del archivo, utilizando instaed de matriz.

Ayuda por favor ...

Gracias,
Ramkrix
  #2 (Enlace permanente)  
Old 03-06-2008
trébol shamrock is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: EE.UU.
Puestos: 753
Cita:
Publicado originalmente por ramkrix View Post

Ahora mi pregunta:
1. en el programa, he utilizado un bucle while varaible con una "X" y comparándolo con ningún azar de mi elección 5. Quiero que en lugar de comprobar la condición en la EF whilepart. Cómo comprobar que.
Si estamos usando el archivo puntero y fopen fn, podemos usar al mismo tiempo (feof (fp) \u003d\u003d 0). Pero aquí hemos utilizado syatem pide y yo no sé cómo comprobar el estado aquí.

2. Te en la salida del programa, he encontrado "cinco", antes de imprimir el número filedescriptor. Pero como por mi programa de flujo, fd debe imprimirse en primer lugar y luego la salida "CINCO".

3.Is Hay alguna othet forma de escribir el programa más sencillo y preciso, sobre todo utilizando piointer para obtener el nombre del archivo, utilizando instaed de matriz.

Ayuda por favor ...

Gracias,
Ramkrix


Código:
#include <stdio.h>

main(int argc, char *argv[])
{
    char *infile;
    FILE *stream;

    infile = argv[1];
    stream = fopen(infile, "r");
}

... ahora puedes usar el estado de flujo de funciones como feof o ferror.
  #3 (Enlace permanente)  
Old 03-07-2008
ramkrix ramkrix is offline
Usuario Registrado
  
 

Fecha: diciembre 2007
Ubicación: Tamilnadu, INDIA
Puestos: 52
Red face

Gracias por su respuesta trébol ..

Tis es la forma, tengo que incluir en la condición de bucle while:

while (feof (stream) \u003d\u003d 0)

Una pregunta para usted: en lugar de utilizar la línea de comandos y la biblioteca C args FNS podemos comprobar esto con el programa de llamadas al sistema absoluto ..

Gracias de antemano,
Ramkrix
  #4 (Enlace permanente)  
Old 03-07-2008
trébol shamrock is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: EE.UU.
Puestos: 753
Cita:
Publicado originalmente por ramkrix View Post
Gracias por su respuesta trébol ..

Tis es la forma, tengo que incluir en la condición de bucle while:

while (feof (stream) \u003d\u003d 0)

Una pregunta para usted: en lugar de utilizar la línea de comandos y la biblioteca C args FNS podemos comprobar esto con el programa de llamadas al sistema absoluto ..

Gracias de antemano,
Ramkrix
Puede utilizar "absoluta las llamadas al sistema" en lugar de rutinas de la biblioteca estándar de C como fopen () y puede evitar el paso de entrada de nombre de archivo como un argumento de línea de comando en la costa de hardcoding la entrada de nombre de archivo en el sistema open () llamada.

La llamada al sistema es mejor para la lectura 5 bytes en el momento de la impresión y archivo de entrada el quinto byte de la salida estándar. Este método es preferible a una creciente y contrarrestar las pruebas en repetidas ocasiones si x <5 o control de uso de la EF feof () estándar lib función.


Código:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

main(int argc, char *argv[])
{
    int fd;
    char name[5];

    fd = open("/path/to/input/file", O_RDONLY);

    while (read(fd, (void *) name, (size_t) 5) == 5)
        printf("the fifth byte is %c\n", name[4]);
}

  #5 (Enlace permanente)  
Old 03-10-2008
ramkrix ramkrix is offline
Usuario Registrado
  
 

Fecha: diciembre 2007
Ubicación: Tamilnadu, INDIA
Puestos: 52
De nuevo gracias por la útil información Shamrock.

quisiera pedirle que la última pregunta de su respuesta:
while (leer (fd, (void *) nombre, (size_t) 5) \u003d\u003d 5)

El "(size_t) 5", ¿qué significa y va a hacer? Bcoz i lectura de un libro que tenemos que dar el sizeof () en el operador final. También se le comaparing a valor "\u003d\u003d 5"? No podía entender aquí.

La continuación es un código de lo que yo en mi programa: leer (fd, nombre, sizeof (nombre));

Era una mina de un derecho?
  #6 (Enlace permanente)  
Old 03-10-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderador
  
 

Fecha: diciembre 2003
Ubicación: Florida
Puestos: 1.938
Cita:
La continuación es un código de lo que yo en mi programa: leer (fd, nombre, sizeof (nombre));
Era una mina de un derecho?
sizeof (nombre) es de 20 desde que nombre definido como un conjunto de 20 caracteres, es decir, char nombre [20]. Por lo tanto, el programa intenta leer de 20 bytes a la vez - sin ninguna comprobación de errores.

Cita:
while (leer (fd, (void *) nombre, (size_t) 5) \u003d\u003d 5)
En este caso, el programa intenta leer 5 bytes y los controles que ha actally leer 5 bytes. size_t está definido por la ISO C para su uso en la representación de la información y el tamaño es muy útil whien código de portabilidad a través de diferentes arquitecturas y modelos de programación es deseable. Es necesario para ser un integrante sin firmar tipo. Normalmente se trata de un int o largo.
Closed Thread

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 06:10 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0