![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| Alto Nível de programação Post perguntas sobre C, C + +, Java, SQL, e outras linguagens de programação aqui. |
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| verificação de valor diferente de zero | philplasma | UNIX para Dummies Perguntas & Respostas | 6 | 01-08-2008 04:51 |
| verificação uid | filthymonk | Programação Shell Script e | 7 | 07-19-2007 11:40 |
| Verificado cp progresso | MarGur | UNIX para Dummies Perguntas & Respostas | 0 | 05-15-2007 05:13 |
| Verificado por PXE | maestro @ Altiris | Sun Solaris | 5 | 05-25-2004 01:06 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Oi,
Estou praticando exercício programas com chamadas de sistema. Pergunta Exercício: escrever um pogram a aceitar um nome do usuário. O programa deverá escrever ecery quinto byte do arquivo para a saída padrão. Meu 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, nome [20]; scanf ( "% s", nome); fd \u003d open (nome, O_RDONLY, 0755); printf ( "fd é% d", fd); if (fd \u003d\u003d- 1) ( printf ( "erro"); exit (1); ) while (x <5) ( move_offset \u003d move_offset + first_offset; lseek (fd, move_offset-1, 0); read (fd, nome, sizeof (nome)); write (1, nome, 1); x + +; ) ) Saída: [ramki @ lindesk3 sysint_ex] $ cc ex1.c-o ex1 [ramki @ lindesk3 sysint_ex] $ ./ex1 . / teste FIVEfd é 3 O arquivo "Teste" conteúdo: abcdFfghiIklmnVpqrsE Agora minha pergunta: 1. no programa, eu usei um loop Embora com um varaible "X" e compará-lo ao acaso nenhum dos meus escolha 5. Em vez disso, gostaria de verificar a condição EOF no whilepart. Como verificar isso. Se estamos usando arquivo ponteiro e fopen fn, podemos usar while (feof (fp) \u003d\u003d 0). Mas aqui usamos syatem chamadas e eu não sei como verificar a condição aqui. 2. Na saída te programa, eu achei "cinco" antes de imprimir o número filedescriptor. Mas, como por meu programa de fluxo, fd deverá ser impresso em primeiro lugar e depois a saída "cinco". 3.Is houver qualquer othet forma de escrever o programa mais simples e precisa, especialmente utilizando piointer para obter o nome do arquivo, instaed de utilizar Array. Please Help ... Obrigado, Ramkrix |
|
||||
|
Citação:
Código:
#include <stdio.h>
main(int argc, char *argv[])
{
char *infile;
FILE *stream;
infile = argv[1];
stream = fopen(infile, "r");
}
... agora você pode usar as funções como feof stream estatuto ou fError. |
|
||||
|
Obrigado por sua resposta shamrock ..
Tis é o caminho, eu preciso incluir a condição do ciclo while: while (feof (stream) \u003d\u003d 0) Só mais uma pergunta para você: em vez de utilizar a linha de comando e C args biblioteca FNS podemos verificar isto por ter o programa absoluta chamadas de sistema .. Thanks in advance, Ramkrix |
|
||||
|
Citação:
A melhor abordagem é chamada de sistema para leitura de 5 bytes em um momento a partir do arquivo de entrada e imprimir o quinto byte a saída padrão. Este método é preferível incrementar mais um balcão e repetidamente testando se x <5 ou controlo de EOF utilizando os feof () padrão lib função. 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]);
}
|
|
||||
|
Mais uma vez obrigado pela informação útil Shamrock.
deixe-me perguntar-lhe a última causa de sua resposta: while (read (fd, (void *) nome, (size_t) 5) \u003d\u003d 5) A "(size_t) 5", o que significa isso e vai fazer? Bcoz desde que li um livro que precisamos dar ao sizeof () operador no final. Também são comaparing-lo ao valor "\u003d\u003d 5"? Eu não poderia compreender aqui. A seguir um código é o que eu no meu programa: read (fd, nome, sizeof (nome)); Foi uma mina de um direito? ![]() |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|