I want to display information in the following format: last name / last name. But he jumps a line in the concatenation. At least that's what I think is happening ...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/*
Síntese
Objetivo: ler nome completo de uma pessoa e exibir, separado por uma barra, o último sobrenome e o primeiro nome
Entrada: Nome da pessoa
Saída: Ultimo sobrenome/Primeiro nome
*/
#define MAX_NOME 256
#define ERRO printf("\nSo pode conter letras!\n");
void apresentaNome(char * nome);
void leValidaTexto(char * msg, char * msgErro, char nome[]);
int main(int argc, char *argv[]) {
char nome[MAX_NOME];
leValidaTexto("Digite o nome completo:", "\nTexto invalido!\n", nome);
apresentaNome(nome);
return 0;
}
void leValidaTexto(char * msg, char * msgErro, char nome[]){
int flag = 1, i=0;
int tam;
do{
printf("%s", msg);
fgets(nome, MAX_NOME, stdin);
tam = strlen(nome)-1;
if(tam==0){
printf("%s", msgErro);
flag = 0;
}else{
for(i=0; i < tam; i++){
if(isdigit(nome[i])!=0){
ERRO
flag = 0;
}else{
flag = 1;
}
}
}
}while(!flag);
}
void apresentaNome(char * nome){
int i=0, j=0, k=0, p=0;
char nomeAux[MAX_NOME], nomeAux2[MAX_NOME];
char nomeAux3[MAX_NOME];
char c = ' ', d = ' ';
for(i=strlen(nome)-1; i>=0; i--){
if(nome[i] == ' '){
break;
}
c = nome[i];
nomeAux[j] = c;
j++;
}
//nomeAux[j] = '#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/*
Síntese
Objetivo: ler nome completo de uma pessoa e exibir, separado por uma barra, o último sobrenome e o primeiro nome
Entrada: Nome da pessoa
Saída: Ultimo sobrenome/Primeiro nome
*/
#define MAX_NOME 256
#define ERRO printf("\nSo pode conter letras!\n");
void apresentaNome(char * nome);
void leValidaTexto(char * msg, char * msgErro, char nome[]);
int main(int argc, char *argv[]) {
char nome[MAX_NOME];
leValidaTexto("Digite o nome completo:", "\nTexto invalido!\n", nome);
apresentaNome(nome);
return 0;
}
void leValidaTexto(char * msg, char * msgErro, char nome[]){
int flag = 1, i=0;
int tam;
do{
printf("%s", msg);
fgets(nome, MAX_NOME, stdin);
tam = strlen(nome)-1;
if(tam==0){
printf("%s", msgErro);
flag = 0;
}else{
for(i=0; i < tam; i++){
if(isdigit(nome[i])!=0){
ERRO
flag = 0;
}else{
flag = 1;
}
}
}
}while(!flag);
}
void apresentaNome(char * nome){
int i=0, j=0, k=0, p=0;
char nomeAux[MAX_NOME], nomeAux2[MAX_NOME];
char nomeAux3[MAX_NOME];
char c = ' ', d = ' ';
for(i=strlen(nome)-1; i>=0; i--){
if(nome[i] == ' '){
break;
}
c = nome[i];
nomeAux[j] = c;
j++;
}
//nomeAux[j] = '%pre%';
//printf("%s", nomeAux);
/*
for(k=strlen(nomeAux)-1;k>=0;k--){
d = nomeAux[k];
nomeAux2[p] = d;
p++;
}
*/
strrev(nomeAux);
for(i=0; i < strlen(nome)-1; i++){
while(nome[i]!= ' '){
//printf("%c", nome[i]);
nomeAux3[i] =nome[i];
break;
}
}
strcat(nomeAux, "/");
printf("%s\n", strcat(nomeAux, nomeAux3));
}
';
//printf("%s", nomeAux);
/*
for(k=strlen(nomeAux)-1;k>=0;k--){
d = nomeAux[k];
nomeAux2[p] = d;
p++;
}
*/
strrev(nomeAux);
for(i=0; i < strlen(nome)-1; i++){
while(nome[i]!= ' '){
//printf("%c", nome[i]);
nomeAux3[i] =nome[i];
break;
}
}
strcat(nomeAux, "/");
printf("%s\n", strcat(nomeAux, nomeAux3));
}