• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ZNez

Dúvida em Ficheiros

9 mensagens neste tópico

Boas,

Estou a ler o livro "Linguagem C" do Luis Damas, quando me deparei com uma dúvida na seccção dos ficheiros.

Na página 352 (para quem tenha o livro tem um exercício para copiar o conteudo de um ficheiro para outro. Eu percebi como isso funciona e sei implementar, não estou é a percebe o argumento do tipo int que a função recebe.

main(int argc, char *argv[])
{
    FILE *fp;
    int ch;
    
    if (argc!=2)
    {
        printf("Sintaxe: \n\n%s Ficheiro\n\n",argv[0]);
        exit(1);
    }
    fp = fopen(argv[1],"r");
    
    if (fp == NULL)
    {
        printf("impossivel abrir o ficheiro %s\n",argv[1]);
        exit(2);
    }
    
    while ((ch=fgetc(fp)!=EOF))
        putchar(ch);
    fclose(fp);
}

Qualquer ajuda... desde já obrigado :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse argumento indica-te o número de argumentos que passaste pela linha de comandos, sendo útil em várias situações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes dar algum exemplo de uma situação? Número de argumentos? Posso estar a fazer grande confusão, mas o único argumento que quero é o nome do ficheiro mais a extensão, não?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se for relativo ao argc tens um bom exemplo no teu programa, quando fazes if(argc != 2). o argc é o número de argumentos passados ao programa + 1 (a chamada ao programa também conta), neste caso o programa termina se o argc for diferente de dois, ou seja, se o programa recebeu mais ou menos que um argumento que aqui deverá ser o nome do ficheiro a duplicar.

espero ter ajudado alguma coisa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por exemplo: gcc -Wall -ansi prog.c

argc = 4 = nome do programa (gcc) + argumentos que recebe (-Wall, -ansi, prog.c).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sendo assim, neste programa o argc não deveria ser 3? ou nao estamos a contar com o argc como sendo argumento?

prog (gcc) + argc + argv

ou apenas

prog (gcc) + argv?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O argc não é argumento nenhum, é apenas um parâmetro que permite saber internamente quantos argumentos é que o programa principal recebeu.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora