NonStop 101 Linux


Escrevendo seu proprito comando “cat” em C
julho 30, 2008, 6:49 am
Filed under: Programação | Tags: , , ,

Codigo fonte

###############################################################

/*
* rawcat.c
* Apresenta arquivo com linhas numeradas
*/

#include <stdio.h>
#define TAMBUFF 120

int main(int argc, char* argv[])
{
FILE *arquivo;
char *linha;
char buffer[TAMBUFF];
int contLinha = 0;

if (argc != 2)
{
fprintf(stderr, “%s requer um nome de arquivo\n”, argv[0]);
return 1;
}
arquivo = fopen(argv[1], “r”);
if (arquivo == 0)
{
fprintf(stderr, “Arquivo %s nao pode ser aberto para leitura\n”, argv[1]);
return 2;
}
while (!feof(arquivo))
{
linha = fgets(buffer, TAMBUFF, arquivo);
if (linha != 0)
printf(“%3d: %s”, ++contLinha, linha);
}
fclose(arquivo);
printf(“\n%s\n”, argv[1]);
return 0;
}

###############################################################

1#if (argc != 2)
2#fprintf(stderr, "%s requer um nome de arquivo\n", argv[0]);
3#return 1;

1# Compara se o argumento passado para o executável existe

2# Nao existindo apresenta uma mensagem de erro

3# retorna um código de erro para o OS

#Se ele existe

arquivo = fopen(argv[1], "r");

#Abre o arquivo para leitura

if (arquivo == 0)

#Compara para ver se o arquivo pode ser aberto

fprintf(stderr, "Arquivo %s não pode ser aberto para leitura\n", argv[1]);

#retorna uma mensagem caso ele não possa ser aberto para leitura
return 2;

#retorna um codigo de erro para o OS

if (arquivo == 0)

#Compara para ver se o arquivo passado como argumento pode ser aberto para leitura

while (!feof(arquivo))

#Enquanto o arquivo estiver aberto e não chegar no final

linha = fgets(buffer, TAMBUFF, arquivo);

#Atribui o valor da linha no loop

if (linha != 0)

#verifica se a linha não e invalida

printf("%3d: %s", ++contLinha, linha);

#imprime uma mensagem numerada com o valor da linha e soma um ao contador da linha atual do arquivo

fclose(arquivo);

#Fecha o arquivo
printf("%s\n", argv[1]);

#imprime uma mensagem com o nome do arquivo
return 0;

#retorna um código de sucesso ao OS

Como compilar o codigo

$cc rawcat.c -o rawcat

Mudando as atribuições para que ele possa ser executado

Usando o novo comando

$./rawcat [arquivo.xyz]

Saída:


$ ./rawcat rawcat.c
1: /*
2: * rawcat.c
3: * Apresenta arquivo com linhas numeradas
4: */
5:
6:
7: #include <stdio.h>
8: #define TAMBUFF 120
9:
10: int main(int argc, char* argv[])
11: {
12: FILE *arquivo;
13: char *linha;
14: char buffer[TAMBUFF];
15: int contLinha = 0;
16:
17: if (argc != 2)
18: {
19: fprintf(stderr, “%s requer um nome de arquivo\n”, argv[0]);
20: return 1;
21: }
22: arquivo = fopen(argv[1], “r”);
23: if (arquivo == 0)
24: {
25: fprintf(stderr, “Arquivo %s nao pode ser aberto para leitura\n”, argv[1]);
26: return 2;
27: }
28: while (!feof(arquivo))
29: {
30: linha = fgets(buffer, TAMBUFF, arquivo);
31: if (linha != 0)
32: printf(“%3d: %s”, ++contLinha, linha);
33: }
34: fclose(arquivo);
35: printf(“%s\n”, argv[1]);
36: return 0;
37: }rawcat.c
$Post em Construção

Anúncios

Deixe um comentário so far
Deixe um comentário



Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s



%d blogueiros gostam disto: