Informática, perguntado por santiagoferraz, 1 ano atrás

Gostaria que me ajudassem em um determinado programa em C.
Este programa tem duas funções, uma que lê o nome e outra que lê a idade, retornam os dados e a função main dá um printf com os dados. No entanto a string nome não está aparecendo no printf.

VEJA:
#include<stdio.h>
#include<string.h>

int main(){

char solitarNome ();
int solitarIdade ();

char nome[20];
int idade;

nome[20] = solitarNome();
idade = solitarIdade();

system("cls");
printf("\n");
printf("Ola %s, seja bem-vindo!!!",nome);
printf("Temos satisfação em receber uma pessoa de %d anos de idade no programa.", idade);
printf("\n");

return 0;
}

/*FUNÇÃO PARA SOLICITAR NOME*/
char solitarNome (){

char nome[20];

printf("Nome: ");
fflush(stdin); fgets(nome, 20, stdin); fflush(stdin);

return nome[20];
}

/*FUNÇÃO PARA SOLICITAR IDADE*/
int solitarIdade (){

int idade;

printf("Idade: ");
scanf("%d",&idade);

return idade;
}

No que estou errando?

Gostaria de uma solução sem ponteiros ou comandos mais complexos por gentileza.

Grato!!!


DennisRitchie: Que pergunta legal!!!!!!!

Soluções para a tarefa

Respondido por DennisRitchie
1
Fiz algumas alterações em seu código, não ficou perfeito (é que ainda sou iniciante...rs). Mas está funcionando.
O erro é que você quis que uma função retornasse um vetor de caracteres(string), na verdade você deveria cria uma função void (que não retorna nada), pois quando você passa um vetor para uma função o valor do vetor será alterado, mesmo ele estando dentro da função main(). Então não é preciso retornar uma string, pois a função mudará seu valor.

Outra coisa, é que quando a função fgets() receber a string, ela também receberá o "ENTER" (quando pressionado no teclado). Com isso quando a função printf mostrar o nome da pessoa na tela, ele sairá como se estivesse pulado uma linha tipo o "\n". Para ficar em um formato mais bonito quando a mensagem for mostrada na tela, você poderia usar a função scanf. Desse jeito:
scanf ( "%[^\n]", texto);

Deixei comentado a função scanf(), caso queira usar, é só excluir a função fgets().

O código está em anexo:

Anexos:
Perguntas interessantes