-2
I’m doing a program that captures a person’s full name and reproduces it in this format: surname, surname without surname (EX:João Carlos Cunha -> Cunha, João Carlos. Amanda Batista -> Batista, Amanda). Only that the user can type as many names as he wants, I tried to limit up to 4, but the program stops working.
I don’t understand the problem.
Here is the code:
#include <stdio.h>
#include <stdlib.h> //para usar a função system();
int main(void)
{
int j, i, qntd_palavras=1;
char nomecompleto[100], nome1[20], nome2[20], nome3[20], nome4[20];
do
{
printf("digite um nome completo\n> "); gets(nomecompleto); fflush(stdin); //pega o nome completo
for(i=0, j=0;nomecompleto[i]!=' '&&nomecompleto!='\0';i++) //aqui ele pega todos os caracteres do nome completo, até achar um espaço ou o limitador
nome1[j++] = nomecompleto[i];
nome1[j]='\0'; //adiciona o limitador no final da string nome1
if(nomecompleto[i++]=='\0')//aqui é verificado se tem algum outro nome
break; //se não tiver, o while é cortado
for(j=0, i++, qntd_palavras++;nomecompleto[i]!=' '&&nomecompleto!='\0';i++)
nome2[j++] = nomecompleto[i]; //repete o mesmo que no passo 1
nome2[j]='\0';
if(nomecompleto[i++]=='\0') //idem
break; //idem
for(j=0, i++, qntd_palavras++;nomecompleto[i]!=' '&&nomecompleto!='\0';i++)
nome3[j++] = nomecompleto[i];
nome3[j]='\0';
if(nomecompleto[i++]=='\0')
break;
for(j=0, i++, qntd_palavras++;nomecompleto[i]!=' '&&nomecompleto!='\0';i++)
nome4[j++] = nomecompleto[i];
nome4[j]='\0';
if(nomecompleto[i++]==' ') //após quatro palavras, se houver mais alguma, o programa acusa erro e limpa a tela
{
printf("\n\nERROR: muitas palavras digitadas!\n\n");
system("cls || clear");
}
else
break;//se não acusar erro, o laço é terminado
}while(1);
switch(qntd_palavras) //aqui vai decidir como vai ser exibido o nome, dependendo da quantidade de palavras
{
case 1:printf("\n\n> %s\n\n", nome1);
break;
case 2:printf("\n\n> %s, %s", nome2, nome1);
break;
case 3:printf("\n\n> %s, %s %s", nome3, nome1, nome2);
break;
case 4:printf("\n\n> %s, %s %s %s", nome4, nome1, nome2, nome3);
break;
default:break;
}
return 0;
}