Szkoła Programowania ( rozdział 9 - zadanie 1 )

0

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

0

Śmieci mogą byc zawsze wyświetlane, bo nie terminujesz stringów...

1 użytkowników online, w tym zalogowanych: 0, gości: 1