Jump to content
Sign in to follow this  
ZNez

Dúvida em Ficheiros

Recommended Posts

ZNez

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

Share this post


Link to post
Share on other sites
Hipnoted

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


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Share this post


Link to post
Share on other sites
ZNez

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?

Share this post


Link to post
Share on other sites
nata79

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...

Share this post


Link to post
Share on other sites
Baderous

Por exemplo: gcc -Wall -ansi prog.c

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

Share this post


Link to post
Share on other sites
ZNez

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?

Share this post


Link to post
Share on other sites
Baderous

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.