[Powered by Google Translate] [Linha de comando argumentos]
[Christopher Bartolomeu - Harvard University]
[Esta é CS50 - CS50.TV]
Um recurso útil para um programa é para aceitar a entrada do usuário.
Até o momento, exploramos algumas funções dentro da biblioteca CS50
para aceitar a entrada do usuário, como "pegar corda",
que avisa o usuário, enquanto o aplicativo é executado, por uma corda.
>> No entanto, há casos em que você deseja fornecer sua entrada programa
antes que ele está realmente funcionando.
Dessa forma, você não precisa de pedir informações adicionais de seu usuário
durante a execução de uma tarefa simples.
Tome-se, por exemplo, o mv ou comando de movimento em UNIX.
Este comando permite que o usuário mover um arquivo de um local para outro.
De acordo com as páginas do manual, mv aceita dois argumentos de linha de comando:
o arquivo que está sendo movido ea localização do arquivo está sendo movido.
Portanto, este exemplo tem um comando com dois argumentos.
Então, como vamos dizer o nosso programa em C para utilizar esses argumentos de linha de comando?
>> Bem, acontece que principal, que usamos em todos os programas C, tem um segredo.
Principal aceita dois parâmetros: argc e argv.
Vamos passar por cima desses termos.
>> O primeiro parâmetro, argc, que está para contagem de argumentos,
tem um tipo de dados inteiro.
O parâmetro argc contém o número de argumentos, incluindo o comando.
No nosso comando de movimento, apesar de só ter dois argumentos apresentados,
valor argc será 3.
O segundo parâmetro, argv, que significa vetor argumento,
é uma matriz de ponteiros de char que apontam para cordas.
>> Isto significa que cada elemento de argv, partindo de zero,
contém o comando e argumentos.
Por exemplo, argv [0], que eu vou chamar de argv zero,
sempre conterá o comando que está sendo executado -
neste caso, mv.
argv [1] irá conter o primeiro argumento, file.txt,
e argv [2] irá conter o segundo argumento, ~ / CS50 /.
O último argumento argv será sempre nulo.
Então, vamos implementar esses argumentos de linha de comando.
Em exercícios anteriores, colocado vazio, ou seja, nada, como parâmetro principal.
No entanto, a fim de nos usar linha de comando argumentos,
precisamos remover vazio e coloque dentro de principal int argc, char * argv [].
Agora, para acessar todo o elemento de argv, que são os seus argumentos,
você pode simplesmente repetir, ou loop, através da matriz como este.
Então, dentro do corpo principal, nós estamos indo para ir em frente e digite um loop:
for (int i = 0; i <argc; i + +).
>> Nós não precisamos de uma chaveta aqui porque estamos apenas a execução de uma linha de código
dentro do corpo do ciclo.
Vamos em frente e bateu na guia uma vez,
digite printf ("argv [% d], para representar um valor inteiro,
é% s, para string, o caractere de nova linha.
Então, nós fornecemos printf i para a iteração atual do loop
e argv [i] para a representação de string do argumento de linha de comando atual.
Quando executá-lo com dois argumentos, vamos ver os argumentos que estão sendo exibidos no terminal.
Anteriormente, disse que o argv realizada uma matriz de ponteiros char.
>> Assim, se este for o caso, como nós, então, acessar caracteres individuais em cada argumento?
Por exemplo, se eu queria olhar para um personagem específico no primeiro argumento?
Bem, a resposta é que nós precisamos aplicar um loop aninhado
que irá então percorrer cada um dos elementos da cadeia de argumento.
Isto é como você fazer isso.
>> Primeiro, vamos fazer uma cópia de exemplo2.c.
Então, dentro do primeiro ciclo,
vamos adicionar um adicional de loop.
Assim, para (int j = 0, n = strlen (argv [i]),
que, em seguida, dá-nos o comprimento do argumento actual,
; J <n, j + +)
Nós vamos imprimir a localização de cada personagem
dentro do argumento atual usando printf.
Assim, printf ("argv [% d], para representar o índice da corrente de argumento,
então [% d] mais uma vez, para representar o caractere atual do argumento atual,
é: c%, para o caráter atual no argumento.
Finalmente, fornecemos printf com o índice do laço externo, i,
em seguida, o índice do loop interno.
>> E o nosso último argumento para printf é o caráter real da argumentação, desde que
na linha de comando.
Agora, porque eu usei a função string strlen para obter o comprimento de uma corda,
Devo acrescentar também a biblioteca string.h para o topo da nossa inclui.
Então, para fazer isso, nós vamos ir para cima, e pouco menos de stdio.h, nós vamos fazer
# Include.
>> Então, vamos compilar e executar e fornecer-lhe um argumento real.
>> E, como podemos ver, agora temos a localização exata de cada char individual no argumento.
Então é isso. Eu sou Christopher Bartolomeu; este é CS50.
[CS50.TV]