Primeiramente, boa noite a todos.
Procurei sobre minha dúvida aqui e não encontrei um tópico que me ajudasse, então criei este.
Estou com um pqno problema com meu código. É o seguinte:
- Eu crio uma Pilha;
- Carrego um arquivo txt no programa;
- Insiro a linha lida em uma posição da Pilha;
mas na hora de mostrar a Pilha não aparece a frase do arquivo, e sim, números.
Alguém pode me ajudar nessa?
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
#define N 10
struct Pilha
{
string Musicas[N]; //Mudado de int Muscias[N] para string Musicas[N] a pedido de @1freakday, mas sem sucesso
int x;
};
Pilha* CriarPilha()
{
Pilha *p = new Pilha;
p->x = 0;
return p;
}
void push(Pilha* p, char* list)
{
p->Musicas[p->x] = (char)list;
p->x++;
}
void ImprimeMusicas(Pilha* p)
{
int tamanho = p->x;
int cont;
for (cont = 0; cont < tamanho; cont++)
cout << p->Musicas[cont] << endl;
}
int main()
{
FILE *leitura;
char musicas[50];
char *aux;
int i = 1;
Pilha *pMusicas = CriarPilha();
leitura = fopen("playlist.txt", "rt");
if (leitura == NULL)
{
cout << "Não foi possível abrir sua playlist." << endl;
return 1;
}
while (!feof(leitura))
{
aux = fgets(musicas, 50 ,leitura);
if (aux) //mostra na tela o arquivo lido
cout << "musica " << i << ": "<< musicas << endl;
i++;
push(pMusicas, aux);
}
ImprimeMusicas(pMusicas);
system("pause");
return 0;
}
Notem, no anexo, que quando imprimo o que foi lido (direto da variável musicas), aparece na tela todas as musicas, mas logo abaixo, o que deveria ser a mesma coisa aparece outros valores.
playlist.txt
Desde já, grato pela atenção e ajuda!