>> [Música tocando]
>> DOUG LLOYD: Tudo bem, então vamos falar sobre argumentos de linha de comando.
Assim, até agora no curso bonita muito todos os seus programas
provavelmente já começou como isto-- void main int.
Temos vindo a recolher entrada do usuário se precisarmos
em nossos programas, como o Mario programa, por exemplo,
por prompts no programa.
Nós não precisamos modificar a declaração de principal,
porque em vez dentro de nós principal apenas dizer, você pode chamá-lo para obter int.
Qual o tamanho que você quer que a pirâmide de ser?
Ou você pode chamá-lo de obter float-- quanta mudança
eu deveria saída para o usuário?
>> Há um outro caminho, porém, e se queremos que nossos usuários
para ser capaz de fornecer dados para o nosso programa
em tempo de execução em vez de enquanto o programa está em execução,
uma distinção sutil, mas por vezes, uma forma muito útil,
precisamos de uma nova forma de declarar principal.
Nós não podemos usar void main int se quisermos coletar outros dados na linha de comando
quando o usuário executa o programa, portanto, argumentos de linha de comando.
>> Para coletar esses linha de comando argumentos do usuário,
alterar a sua declaração de principal para olhar como isto-- int
principais, parêntese aberto, int argc, vírgula, corda argv, colchetes,
e em seguida, abra chaveta.
Então, o que isso significa já?
Bem, nós estamos passando em dois parâmetros, ou argumentos, ou entradas para principal.
Um deles, um número inteiro chamada argc, eo outro é o quê?
É uma matriz de seqüências, certo?
Vemos que a notação colchete.
É uma matriz de cadeias.
Não é uma string individual, é uma matriz de cadeias.
E estes dois argumentos, argc e argv, permitem que você para saber o que o usuário de dados
tem proporcionado na linha de comando e quantas coisas
fornecida na linha de comando.
Coisas muito úteis para trabalhar.
>> Argc significa contagem de argumento, e você deve saber, a propósito,
que você poderia chamar argc o que quer que você o quer.
Você pode ligar para argv o que você queria.
Estes são apenas nomes convencionais que usamos para eles-- contagem de argumento,
e, como veremos em um segundo, argumento vetor, argv.
Mas você não tem que chamá-los argc e argv se você não quer,
mas convencionalmente, que é o que fazemos.
>> Então, de qualquer maneira, argc, a contagem de argumento.
É uma variável do tipo inteiro e assim, como você poderia esperar, se temos duas coisas
que vamos estar encontrando o que estes são digitadas
e quanta coisa a usuário digitou, argc é
vai nos dizer o quanto encher o usuário digitou.
Por isso, dá-lhe um número de argumentos de linha de comando do usuário
digitado quando o programa foi executado.
Portanto, se seu programa é executar dot cortar ganancioso,
e no interior do seu ganancioso programar sua função principal
tem a declaração int main int argc, corda argv colchetes, em seguida,
argc, nesse caso, é uma delas.
Agora note que não fazer contar quantas coisas
o usuário digitou após o nome do programa.
O próprio nome do programa conta como um argumento de linha de comando.
>> Então dot cortar ganancioso, em Nesse caso, é um argc.
Se o usuário digitou barra ganancioso 1024 CS50 na linha de comando, ARGC, nesse caso,
seria três.
E nós sabemos disso porque o caminho que a divisão entre as cordas
é se for detectada existe um espaço, ou um separador,
ou algo parecido entre eles.
Assim, qualquer quantidade de espaço branco, assim chamado, entre os valores digitados de linha de comando
indica quantas existem.
Então dot cortar espaço ganancioso 1.024 espaço CS50, argc, nesse caso, é de três.
>> Argv é o vetor de argumento.
Vector, por sinal, é apenas outra palavra para uma matriz,
e isto é uma matriz que armazena cordas.
Uma seqüência de caracteres por elemento, que é as cadeias de caracteres que o usuário realmente
digitado na linha de comando quando o programa foi executado.
Agora, como é o caso com qualquer array, se você
lembrar da nossa discussão de matrizes, o primeiro elemento de argv
é sempre vai ser encontrado em argv colchete zero.
Esse é o primeiro índice da matriz argv.
Assim que will-- e, de fato, que a vontade ser sempre o nome do programa,
será sempre localizado no argv colchete zero.
>> O último elemento de argv é sempre encontrado em argv quadrado colchetes argc menos um.
Você percebe por que?
Lembre-se de quantos elementos existem nesta matriz.
Bem, nós sabemos que é que-- argc número de elementos.
Se o usuário digitou três coisas ao a linha de comando, argc é três.
Mas porque em c, quando estamos trabalhando com matrizes, cada elemento da matriz,
ou melhor, os índices de a matriz, começam em zero.
Se temos três elementos na nossa array, temos um elemento no argv zero,
um elemento em argv um, e um elemento em argv dois.
Não há nenhum elemento em argv três, e uma matriz de tamanho três.
É por isso que a última elemento de argv pode sempre
ser encontrado na Praça argv argc suportes menos um.
>> Então vamos supor que as executa usuário o programa ganancioso como follows--
se digitar na linha de comando dot cortar ganancioso espaço 1,024 espaço CS50,
e por qualquer motivo nós temos já preparado o nosso programa gananciosos
de conhecer e trabalhar com estes linha de comando argumentos.
Nós não fez anteriormente quando trabalhávamos nele para o problema ganancioso,
mas vamos dizer que temos agora modificado -lo para que nós fazemos processo
os argumentos de linha de comando de alguma forma.
Neste caso, de zero argv é barra dot ganancioso.
O que é um argv?
Bem, é 1024, certo?
É 1024, mas aqui está uma distinction-- realmente importante
você se lembra do tipo de argv dados?
>> Ele armazena seqüências, certo?
Mas parece que 1024 é um valor inteiro.
Este é realmente um importante distinção, e é, na verdade,
vai se tornar algo que você pode encontrar em problemas posteriores.
Tudo em argv é armazenado como uma string.
Assim conteúdo de um argv são o seqüência um, zero, dois, quatro,
composta pelos quatro personagens.
É como se o usuário digitou um, zero, dois, quatro
como letras individuais ou caracteres.
Não é o número inteiro 1024, e por isso você não pode diretamente
trabalhar com ele dizendo int 1000, ou em vez int x é igual a um menos 24 argv.
>> Intuitivamente, você pode pensar de que como, OK, bem, é 1024 menos 24,
de modo que x é igual a 1,000.
Mas, na verdade, isso não é o caso, porque argv é um string.
A seqüência de 1024.
Agora, há uma função que pode ser usado para converter seqüências de números inteiros.
Eu não vou desperdiçá-la para você agora, mas eu tenho certeza Zamyla
será feliz para falar sobre isso em o passo a passo para um problema futuro.
Mas você também pode encontrar problemas como-- desculpa
me, funções que faria fazer isso em referência 50,
se você vai para o guia de referência você pode encontrar uma função que
vai fazer esta conversão para você.
Mas, novamente, no passo a passo um problema para o futuro,
Zamyla terá o prazer de dizer-lhe que a função
é o que vai converter seqüência de 1024 a 1024 o número inteiro.
>> Tudo bem, então seguir em frente.
Nós cobrimos a nossa zero, argv, nós cobrimos argv um.
O que está em argv dois?
CS50.
Aquela é provavelmente bastante auto-explicativo.
O que está em argv três?
Bem, novamente, nós realmente não sei, certo?
Nós temos uma matriz de tamanho três, é assim que muitos elementos do usuário
digitado na linha de comando, por isso, se vamos para argv três,
agora estamos ultrapassando os limites da nossa matriz.
O compilador vai deixar-nos fazer isso, não há nenhum problema intuitiva com ele,
mas em termos de realmente o que está acontecendo a acontecer, nós realmente não sabemos.
Depende do que é localizado na memória onde
argv três seria esperado para ser.
E assim poderíamos acabar ficar longe scot livre.
Mais provável que não, especialmente quando você está trabalhando com argv em oposição
para qualquer outra matriz que está em nosso programa,
nós provavelmente vai sofrer uma falha de segmentação. Então, novamente,
ser-se de não ultrapassar os limites de suas matrizes, particularmente argv,
dado o seu elevado grau de importância em seus programas.
>> Eu sou Doug Lloyd.
Este é CS50.