Mein Programm gibt Garbage-Werte für Variablen zurück, die als C-Strings modelliert sind. Das Programm verwendet eine Klasse, um den Datentyp Song zu modellieren. Es scheint, dass der Fehler auftreten würde, wenn die Variable gesetzt ist.
Die Eingänge für das Programm und die Ausgänge sind unten aufgeführt.
Ich entschuldige mich für die Länge des Codes.Programm zurückgeben von Garbage-Werten beim Zurückkehren von cstring
Warum die Zufallswerte?
-Code
#include <iostream>
#include <cstring>
using namespace std;
const int MAX_CHAR = 100;
class Song
{
public:
//Default constructor
Song();
//Constructor
Song(char title[], char artist[], char album[], int min, int sec);
//Destructor
~Song();
//Accessor functions
char getTitle()const;
char getArtist() const;
char getAlbum() const;
int getMin() const;
int getSec() const;
//Mutator functions
void setTitle(const char*);
void setArtist(const char*);
void setAlbum(const char*);
void setMin(int);
void setSec(int);
private:
//Member Variables
char title[MAX_CHAR];
char artist[MAX_CHAR];
char album[MAX_CHAR];
int min;
int sec;
};
Song::Song(){}
Song::Song(char newTitle[],char newArtist[],char newAlbum[], int newMin, int newSec)
{
strncpy(title, newTitle, 100);
strncpy(artist, newArtist, 100);
strncpy (album, newAlbum, 100);
min = newMin;
sec = newSec;
}
Song::~Song(){}
//getter functions
char Song::getTitle() const
{
return title[MAX_CHAR];
}
char Song::getArtist() const
{
return artist[MAX_CHAR];
}
char Song::getAlbum() const
{
return album[MAX_CHAR];
}
int Song::getMin() const
{
return min;
}
int Song::getSec() const
{
return sec;
}
//setter functions
void Song::setTitle(const char newTitle[])
{
strcpy(title, newTitle);
}
void Song::setArtist(const char newArtist[])
{
strcpy(artist, newArtist);
}
void Song::setAlbum(const char newAlbum[])
{
strcpy(album, newAlbum);
}
void Song::setMin(int min)
{
this->min = min;
}
void Song::setSec(int sec)
{
this->sec = sec;
}
int main()
{
char newTitle[MAX_CHAR];
char newArtist[MAX_CHAR];
char newAlbum[MAX_CHAR];
int min;
int sec;
cout << "Enter title: ";
cin >> newTitle;
cout << "Enter artist: ";
cin >> newArtist;
cout << "Enter album: ";
cin >> newAlbum;
cout << "Enter minutes: ";
cin >> min;
cout << "Enter seconds: ";
cin >> sec;
Song song;
song.setTitle(newTitle);
song.setArtist(newArtist);
song.setAlbum(newAlbum);
song.setMin(min);
song.setSec(sec);
cout << endl << "Title: " << song.getTitle() << endl <<
"Artist: " << song.getArtist() << endl <<
"Album: " << song.getAlbum() << endl <<
"Minutes: " << song.getMin() << endl <<
"Seconds: " << song.getSec() << endl;
return 0;
}
I/O
Die Eingänge und die fehlerhaften Werte, die konsequent zurückgeführt werden:
//Inputs
Enter title: title
Enter artist: artist
Enter album: album
Enter minutes: 3
Enter seconds: 20
//Outputs
Title: a
Artist: a
Album:
Minutes: 3
Seconds: 20
Was sehen Sie beim Debuggen? Könnten Sie bitte einen [MCVE] bereitstellen, damit wir Ihnen helfen können? –
Verwenden Sie einfach std :: string und entfernen Sie alle Arrays. –
'return title [MAX_CHAR];' - Erkläre, was du denkst. – PaulMcKenzie