Ir ao conteúdo
  • Cadastre-se

C imprimir primeiro e ultimo nome


Ganeco
Ir à solução Resolvido por devair1010,

Posts recomendados

preciso de uma ajuda, tenho um trabalho de faculdade para resolver que pede o seguinte = imprimir apenas o primeiro e o ultimo nome da pessoa em C, sei que tenho que contar de trás para frente e vice e versa, mas estou com duvida de como identificar o espaço, alguém poderia me auxiliar? entrada - joao antonio tavares ---> saida - joao tavares

int main ()
{
    int x,tam;
    char nome [100];
    printf ("digite um nome\n");
    gets(nome);
    tam=strlen (nome);
    for (x=0; x=null;x++)
    {
        printf("%c ",nome [x]);
    }
    for (x=tam-1; x>=0; x--)
    {
        printf(" %c ",nome [x]);
    }
    printf("\n\n");
    system ("pause");
    return 0;
}

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Solução

@Ganeco     seu código não está compilando , e esse null , que você colocou no Loop for não funciona dessa forma  , geralmente se usa ele com ponteiros ,  e o resultado final não faz o que se pretende , pois apenas escreve o nome e os sobrenomes ao contrário , então creio que o que você precisa fazer é mover os caracteres da última palavra da string para as posições começando do primeiro caractere depois do primeiro espaço da string , e assim que terminar essa movimentação dos caracteres coloque o finalizador de string  '\0' , e assim escreve a string modificada .

 aqui como a linguagem  c , armazena os caracteres de huma string :

1549844176_outrastring.thumb.JPG.336a6c9026c5bc7ff443be41072b7ddc.JPG

 então creio que seu código poderia ser assim  :

#include <stdio.h>
#include <iomanip>
int main()
{
    int x,y,tam;
    char nome [100];
    printf ("digite um nome\n");
    fgets(nome,99,stdin);        //  reserva um espaço no vetor de char
                                 //  para armazenar o caractere nulo '\0'
                                 //  finalizador de string's
    tam = strlen (nome);
    tam--;
    x = tam;
    y = 1;
    while(nome[x-1] != ' ')x--;  //  aponta para o primeiro caractere do último nome
    while(nome[y-1] != ' ')y++;  //  aponta para o primeiro caractere depois do primeiro espaço da string
    for(; x<tam; x++ )           //  apenas os últimos caracteres da string
    {
        nome[y] = nome[x];       //  puxa os caracteres do último nome da string
                                 //  e coloca depois do primeiro espaço da string
        y++;                     //  incrementa a posição na string , onde colocar o prox caract
    }
    nome[y] = '\0';              //  marca o final da nova string
    printf("\nO nome e sobreNome => %s\n\n",nome);
    system ("pause");
    return 512;
}

 

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

Outra forma seria usando o loop para procura o espaço e quando encontrar substituir pelo terminador e atribuir o endereço da próxima posição para pegar o último nome,

 

#include <stdio.h>

int main() {
    char nome[100];
    char *p = nome;
    char *ultimo;
    
    printf("Digite um nome: ");
    fgets(nome,100,stdin);
    
    while(*p){
        if(*p == ' '){
            ultimo = p + 1;
            *p = 0;
        }
        p++;
    }
    printf("%s %s",nome, ultimo);
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...