Boa noite, bem quero fazer uma lista duplamente ligada, onde o núcleo é uma string, mas a entrada dos nomes é por uma linha única, mas o último nomo sai com um '\n' e não quero isso. alguém sabe como posso resolver isso?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct No {
char info[41];
struct No *ant;
struct No *prox;
} No;
void imprimi_lista(No *lista) {
if (lista != NULL) {
printf("%s ", lista->info);
imprimi_lista(lista->ant);
}
}
No * liberar_lista_recursiva ( No * lista ) {
if ( lista != NULL ) {
liberar_lista_recursiva ( lista -> prox );
free ( lista );
}
return NULL ;
}
int main(){
No *lista = NULL;
No *aux;
char linha[501];
printf("Digite os nomes\n");
fgets(linha, 501, stdin); /*exemplo de entrada: "ruan carlos cleber"*/
char *nome;
nome = strtok(linha, " "); /*separa a entrada pelo " "*/
while( nome != NULL ) {
printf("Nome: %s\n", nome);
No *novo = ( No *) malloc ( sizeof ( No ));
strcpy(novo->info, nome);
novo->prox = lista;
novo->ant = NULL;
if(lista != NULL)
lista->ant = novo;
lista = novo;
nome = strtok(NULL, " ");
}
aux = lista;
while(aux->prox != NULL)
aux = aux->prox;
printf("\n");
printf("Imprime\n");
imprimi_lista(aux); /*Saida errada: "ruan carlos cleber
"*/
liberar_lista_recursiva(aux);
return 0;
}