Chyba po spusteni – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Chyba po spusteni  – C / C++ – Fórum – Programujte.comChyba po spusteni – C / C++ – Fórum – Programujte.com

 

kitika
~ Anonymní uživatel
2 příspěvky
30. 1. 2010   #1
-
0
-

prosim kde mam chybu po spusteni programu ve VS 08 mi to vyhodi nejakou chybu jinak program se provede dobre


#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstring>
using namespace std;
class Cow
{
public:
Cow();
Cow(const char *nm,const char *ho, double wt);
~Cow();
Cow(const Cow &);

Cow &operator=(const Cow &);
void ShowCow();
private:
char name[22];
char *hobby;
double weight;
int delka;
int delka_1;
};
void Cow::ShowCow()
{
cout<<"Vaha je "<<weight;
cout<<"\nHobby je "<<hobby;
cout<<"\nJmeno je "<<name;
}
Cow::Cow()
{
static const char *s = "Ahoj";
char jmeno[22]="Pepa";
strncpy(name,jmeno,5);
int poc = strlen(s);
hobby = new char[poc+1];
strcpy(hobby,s);
weight = 99;
delka = 0;
delka_1 = 0;
}
Cow::Cow(const char *nm,const char *ho, double wt)
{
delka = strlen(nm);
hobby = new char[delka+1];
strcpy(hobby,nm);
delka_1=strlen(ho);
strncpy(name,ho,10);
weight = wt;

}
Cow::Cow(const Cow &d)
{ int delka = d.delka;
hobby = new char[delka+1];
strcpy(hobby,d.hobby);
strncpy(name,d.name,10);
weight = d.weight;
}
Cow & Cow :: operator=(const Cow &c)
{
int delka = c.delka;
hobby = new char[delka+1];
strcpy(hobby,c.hobby);
strncpy(name,c.name,10);
weight = c.weight;
return *this;
}

Cow::~Cow()
{
delete [] hobby;
}
int main()
{
Cow milka;
milka.ShowCow();
cout<<"\n";
Cow nepka("Plavani","nepka",76);
nepka.ShowCow();
cout<<"\n";
Cow depka(nepka);
depka.ShowCow();
cout<<"\n";
Cow lepka("fff","ff",44);
lepka = milka;
lepka.ShowCow();
}

Nahlásit jako SPAM
IP: 77.48.244.–
Bald3rr0
Super člen
30. 1. 2010   #2
-
0
-

To kitika : Můžeš uvést lepší popis problému, než nějaká chyba?

Nahlásit jako SPAM
IP: 82.100.0.–
LJ10240
Stálý člen
1. 2. 2010   #3
-
0
-

Zkusil jsem to na mém VS08 a kompilace proběhla v pořádku, bez chyb. Co tě možná zarazilo, byly řádky typu

c:\(...)main.cpp(62) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : see declaration of 'strcpy'

to je způsobeno tím, že funkce strcpy nekontroluje velikost cílového bufferu a může dojít k přetečení. To je podle Microsoftu kritická chyba. Pokud píšeš zdrojáky zodpovědně, pak by to neměl být problém (V tomto případě neexistuje ani reálné riziko, že by se někdo pokusil do tvého programu naočkovat škodlivý kód. :-D)

Pokud je to tohle, cos myslel, tak se tím nezabývej..

Nahlásit jako SPAM
IP: 217.30.64.–
liborb
~ Redaktor
+18
Guru
2. 2. 2010   #4
-
0
-

A ještě lepší řešení je nechat si hlášením poradit a místo strcpy použít bezpečnou strcpy_s, která má pouze o jeden parametr (délku bufferu dest) navíc.

Nahlásit jako SPAM
IP: 85.207.166.–
kitika
~ Anonymní uživatel
2 příspěvky
2. 2. 2010   #5
-
0
-

To liborb : Díky všem

Nahlásit jako SPAM
IP: 77.48.244.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Podobná vlákna

Spusteni TP — založil Gwaihir

Spuštění — založil SibleR

Po spuštění — založil Spectator

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý