Ir para conteúdo
Fórum Script Brasil
  • 0

Endereço Da Primeira Letra Do Nome


ccgpirado

Pergunta

Estou com problema nesse código, mais abaixo explicarei o problema:

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <cstdlib>
#include <iostream>
#define maxtam 50

using namespace std;

int main(int argc, char* argv[])
{
        char nome[maxtam+1], *c1, *c2, *final;
        int contnomes = 0;

        cout << "Entre com seu nome:\n";
        gets(nome);
        c1 = &nome[0];
        final = &nome[0];
        cout << c1 << ", " <<  final << "\n";
        while (*final != ' ') {
                final++;
        }

        do {
                while ((*c1 == ' ') && (c1 < final)) {
                        c1++;
                }
                c2 = c1;
                
                while ((*c1 != ' ') && (c1 < final)) {
                        c1++;
                }
                if (c1 < final) {
                        c1 = '';
                        cout << "\nO " << contnomes << ".o nome e : " << c2;
                        contnomes++;
                }
                else {
                        if (c1 > c2) {
                                cout << "\nO " << contnomes << ".o nome e : " << c2;
                                contnomes++;
                        }
                }
                c1++;
        } while (c1 < final);
        cout << "\n\nForam encontrados " << contnomes << " nomes.";
        getchar();
        return 0;
}
//---------------------------------------------------------------------------
Uso o compilador DEVC++ e essa parte do código, especificamente, está me dando dor de cabeça:
c1 = &nome[0];
        final = &nome[0];

Teoricamente, ela deveria pegar o endereço da primeira letra do nome, porém, ele pega o nome completo digitado no programa acima e faz o que deve de fazer usando o noime completo que ele pegou....

Como posso corrigir esse erro??

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Opa!

Cara, com essa atribuição você está determinando que c1, final e nome são todos o mesmo vetor, pois estão apontando para a mesma posição de memória. Sendo mais claro, se você faz um ponteiro apontar para a primeira posição de memória de um vetor, aquele ponteiro "também será" aquele vetor.

Não sei se isso esclarece a sua dúvida. Se não o fizer, poste-a novamente, explicando melhor.

Boa sorte!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...