Alguns compiladores permitem que a função main receba um terceiro parâmetro (além de argc e argv), que também é um vetor de strings e contém as variáveis de ambiente do sistema operacional. A sua estrutura é semelhante ao argv, mas não contém um contador associado. No entanto, após a última variável de ambiente sempre é colocado um NULL.

Todas as variáveis de ambiente têm um nome seguido do sinal de igual e do valor que contêm.

Exemplo:

COMSPEC=E: \WINDOWS\COMMAND.COM

PROMPT=$p$g

PATH=E:\WINDOWS;E:\WINDOWNS\COMMAND;C:\DOSFAX;C:\DOS;C:\BATS

TEMP=C:\TMP

Implemente um programa que liste todas as variáveis de ambiente existentes no seu computador.

Atenção: Esta possibilidade pode não estar presente no compilador que você está usando.

Passo 1

Fala aí! Essa aqui é bem específica, hein? Esses tais de argc e argv são parâmetros passados à função main capazes de dar acesso à linha de comando com a qual o programa foi chamado. O primeiro deles é um inteiro que indica o número de parâmetros passados ao programa, enquanto o segundo é um vetor de strings com todas as strings passadas na linha de comando.

Como sugerido pelo enunciado, a estrutura do nosso terceiro parâmetro é bem semelhante à do tal argv, e ele também será um ponteiro que aponta para um ponteiro para caractere, ou seja, o declaramos assim:

Eu escolhi chamá-lo de p, mas você pode chamar como quiser, desde que a declaração char ** permaneça igual.

Passo 2

Em seguida, abrimos um laço while para imprimir todas as linhas, ou strings de p, da seguinte forma:

Quando escrevemos while(*p), é a mesma coisa que escrever while(1), o que significa um laço “infinito”. Dentro deste laço, basta colocar um comando puts, para imprimir a string, e incrementamos p para fazê-lo com as linhas subsequentes.

Resposta