Portál AbcLinuxu, 12. května 2025 07:27

Dotaz: Chyba segmentacie

8.10.2006 01:12 ramon
Chyba segmentacie
Přečteno: 371×
Odpovědět | Admin
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    char input[50] = "./subor";
    char znak;

    int r = 0;
    char rr[20];

    char help[20];

    int ahoj[8];
    int caw;

    ifstream fin(input);
    int i = 0;
    while (fin.get(znak))
    {
        if (strcmp(&znak," ") == 0)
        {
            ahoj[i] = atoi(help);
            strcpy(help,"");
            i++;
            continue;
        }

        strcat(help, &znak);
    }

    for (i = 0; i < 8; i++)
        cout << ahoj[i] << endl;

    cout << endl;
    return 0;
}

Ja to uz asi neprezijem. Odkedy programujem riesil som uz vela problemov nad ktorymi som maturoval dlho, a potom som zistil ze ide o nejaku blbost. Ale na tomto sedim od rana. Ked vymazem riadky
int r = 0;
char rr[20];
a program skompilujem znova, stale mi to vypise chyba sagmentacie.. ja som z toho magor a nechapem preco. Kompilator je gcc 4.0.2 na SuSE linuxe. To iste robi aj ked napr. presunim riadky
int ahoj[8];
int caw;
na nejake ine miesto, alebo ked ten kod hore nejako popremiestnujem. inak program funguje normalne. prosim pomozte...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 8.10.2006 01:24 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Chyba segmentacie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tohle je blbost:
strcat(help, &znak);
A celkově je nebezpečné používat omezené buffery s neomezenou možností do nich něco cpát.
8.10.2006 02:19 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Chyba segmentacie
Striktně vzato je špatně dokonce už i to strcmp(&znak," ")
8.10.2006 02:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Chyba segmentacie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obecná rada: spusťte to v debuggeru, pak uvidíte, kde a při jakých hodnotách proměnných ten SEGV nastává.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.