Witam wszystkich serdecznie.
Mam pewnego rodzaju problem z tym kodem:
plik nagłowkowy golf.h:
const int Len = 40;
struct golf
{
char fullname[Len];
int handicap;
};
// WERSJA NIEINTERAKTYWNA:
// FUNKCJA USTAWIA W STRUKTURZE GOLF ZADANA NAZWISKO I HENDICAP
// NA PODSTAWIE ARTUMENTOW WYWOLANIA
void setgolf(golf & g, const char * name, int hc);
// WERSJA INTERAKTYWNA:
// FUNKCJA POBIERA NAZWISKO I WARTOSC HENDICAPU OD UZYTKOWNIKA
// I USTAWIA POLA STRUKTURY G ZGODNIE Z POBRANYMI WARTOSCIAMI;
// ZWRACA 1, JESLI UDALO SIE ODCZYTAC Z WEJSCIA WARTOSC POLA NAME
// ALBO 0, KIEDY POLE NAME JEST CIAGIEM PUSTYM
void setgolf(golf & g);
// USTAWIA HENDICAP GRACZA
void handicap(golf & g, int hc);
// WYSWIETLA ZAWARTOSC POL STRUKTURY GOLF
void showgolf(const golf & g);
plik zródłowy golf.cpp:
#include <iostream>
#include "golf.h"
using namespace std;
void setgolf(golf & g, const char * name, int hc)
{
int i=0;
while(*name != '\0')
{
g.fullname[i] = name[0];
cout << "g.fullname[i]: " << g.fullname[i] << ", name[0]: " << name[0] << endl;
name++;
i++;
}
g.handicap = hc;
cout << "setgolf: " << g.fullname << ", " << g.handicap << endl;
}
void setgolf(golf & g)
{
}
void showgolf(const golf &g)
{
cout << "showgolf: " << g.fullname << ", " << g.handicap << endl;
}
plik źródłowy main.cpp:
#include <QCoreApplication>
#include <iostream>
#include "golf.h"
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
golf selby, higgins, sullivan, andy;
setgolf(selby, "Mark Selby", 10);
setgolf(higgins, "John Higgins", 20);
setgolf(sullivan, "Ronnie O'Sullivan", 30);
showgolf(selby);
showgolf(higgins);
showgolf(sullivan);
return a.exec();
}
Problem polega na tym, że nie mam pojęcia dlaczego pierwsze wywołania set oraz show są poprawne, a w kolejnych dodawane są jakieś śmieci na końcu ..... Jeśli ktoś może wyjaśnić skąd te śmieci się biorą byłbym wdzięczny ;)
Pozdrawiam