Programar em C/Estudo: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
EvertonS (discussão | contribs)
→‎Declarando variáveis: já esta no livro programar em C na pagina variáveis ,as palavras reservadas também já tem uma pagina
EvertonS (discussão | contribs)
→‎Os Argumentos argc e argv: Movido para pagina Programar em C/Mais sobre funções
Linha 708:
 
Espere um momento... será que nós já não vimos esta história de chamar uma função com as variáveis precedidas de &? Já! É assim que nós chamamos a função scanf(). Mas porquê? Vamos pensar um pouco. A função scanf() usa chamada por referência porque ela precisa alterar as variáveis que passamos para ela! Não é para isto mesmo que ela é feita? Ela lê variáveis para nós e portanto precisa alterar seus valores. Por isto passamos para a função o endereço da variável a ser modificada.
 
== Os Argumentos argc e argv ==
 
A função main() como dissemos antes é uma função especial.
 
Mas a função main() também pode ter parâmetros formais. no entanto o programador não pode escolher quais serão
 
'''int main (int argc,char *argv[]);'''
 
*O argc (argument count) é um inteiro e possui o número de argumentos com os quais a função main() foi chamada na linha de comando. Ele é, no mínimo 1, pois o nome do programa é contado como sendo o primeiro argumento.
*O argv (argument values) é um ponteiro para uma matriz de strings. Cada string desta matriz é um dos parâmetros da linha de comando. O argv[0] sempre aponta para o nome do programa (que, como já foi dito, é considerado o primeiro argumento). É para saber quantos elementos temos em argv que temos argc.
 
Exemplo: Escreva um programa que faça uso dos parâmetros argv e argc. O programa deverá receber da linha de comando o dia, mês e ano correntes, e imprimir a data em formato apropriado. Veja o exemplo, supondo que o executável se chame data:
 
data 19 04 99
 
O programa deverá imprimir:
19 de abril de 1999
 
<source lang="C">
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
int mes;
char *nome_mes [] = {
"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
"Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
};
if(argc == 4) /* Testa se o número de parâmetros fornecidos está correto,
o primeiro parâmetro é o nome do programa, o segundo o dia,
o terceiro o mes e o quarto os dois últimos algarismos do ano */
{
mes = atoi(argv[2]); /* argv contem strings. A string referente ao mes deve ser transformada
em um numero inteiro. A funcao atoi esta sendo usada para isto:
recebe a string e transforma no inteiro equivalente */
if (mes<1 || mes>12) /* Testa se o mes e' valido */
printf("Erro!\nUso: data dia mes ano, todos inteiros");
else
printf("\n%s de %s de 19%s", argv[1], nome_mes[mes-1], argv[3]);
}
else printf("Erro!\nUso: data dia mes ano, todos inteiros");
}
</source>
 
== Recursividade ==