Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Compiler Probleme

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.09.2003, 18:52 Uhr
Anfänger00



Hallo,
ich habe Probleme mit dem Dev-c++ compiler.
Programme,wie z.B folgendes Wörter-zähl Programm,stürzen einfach
bei jeder eingabe ab.Mit dem kostenlosen Compiler von Borland geht's
aber.
Wisst ihr warum dieser compiler öfter mal Programme erzeugt die nicht richtig funktionieren?
Oder habe ich bei diesem Beispiel vielleicht ein paar wichtige Sachen nicht beachtet?

C++:
#include <iostream>
#include <conio.h>

using namespace std;

int mystrlen(const char* buffer);

int main()
{
    char text[]="Text";

    int anzahl=0;
    int a[1000],b[1000];
    char* suchwort;
    int  p=0;

    cout<<"Gesuchtes Wort eingeben: ";
    cin>>suchwort;
    int pruef=mystrlen(suchwort);
    int pruef2=0;
    while(true)
    {
        for(int i=0;i<mystrlen(suchwort);i++)
        {
            if(text[i+p]==suchwort[i])
            {pruef2++;}
            else break;
        }
        if(pruef==pruef2)
        {
            anzahl++;
        }
        p++;
        pruef2=0;
        if(text[p+mystrlen(suchwort)]=='\0')
        {break;}
    }
    cout<<" Das gesuchte Wort wurde "<<anzahl<<"mal gefunden!";
    getch();
}

int mystrlen(const char* buffer)
{
    int x=0;
    while(buffer[x] != '\0')x++;
    return x-1;
};



THX

--edit 0xdeadbeef: Ich hab mir erlaubt, den Code ein bisschen lesbarer einzurücken.

Dieser Post wurde am 30.09.2003 um 19:08 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.09.2003, 19:13 Uhr
0xdeadbeef
Gott
(Operator)


Du hast für Suchwort keinen Speicher angefordert, und du greifst u.U. auf Bereiche hinter text zu,das wird der Grund sein, warum er abstürzt. An deiner Stelle würde ich std::string benutzen, dann hast du damit keinen Ärger.

Außerdem gibt deine mystrlen-Funktion eins zuwenig zurück (überleg dir, was die funktion bei einem leeren String zurückgibt).
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 30.09.2003 um 19:15 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.09.2003, 20:58 Uhr
Anfänger00



Danke,ich bleib zwar bei char,aber jetzt geht's!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.09.2003, 21:41 Uhr
0xdeadbeef
Gott
(Operator)


Mach, was du für richtig hältst. Aber mit std::string wäre das ganze schon ziemlich viel einfacher. Sieh her:

C++:
#include <iostream>
#include <string>
#include <sstream>

int main()
{
  std::string text = "A long time ago, in a galaxy far, far away...\n"
                     "                 STAR WARS\n"
                     "             Episode IV: A new hope\n"
                     "It is a period of civil war. Rebel spaceships, striking from\n"
                     "a hidden base blah, blah, blah";
  std::string suchwort, tmp;
  std::istringstream sin;
  int anzahl = 0;

  std::cout << "Bitte gesuchtes Wort eingeben: " << std::flush;
  std::cin >> suchwort;
  sin.str(test);
  while(sin) {
    sin >> tmp;
    if(tmp == suchwort) ++anzahl;
  }

  std::cout << "Das gesuchte Wort wurde " << anzahl << " mal gefunden." << std::endl;
}


Das ist jetzt ungetestet, aber so etwa könnte man es machen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.10.2003, 14:11 Uhr
Anfänger00



Klar,aber ich bin Anfänger und versuche zum üben ein paar Funktionen von string selber zu schreiben.Und das "ich bleib bei char" war nur auf dieses Beispiel und deren erweiterung bezogen.Mir macht es außerdem Spaß mit char ein wenig rum zu experimentieren.
--edit:Sag mal ist das eigentlich performater als bei string?
Und mehr schreiben muss ich ja,wenn ich das ganze als Funktion mache,auch nicht.

Dieser Post wurde am 01.10.2003 um 14:17 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.10.2003, 14:14 Uhr
0xdeadbeef
Gott
(Operator)


ach so. Gut, dann ist das genehmigt. Ist auch ganz sinnvoll, mit Pointern umgehen zu können.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.10.2003, 19:55 Uhr
Anfänger00



So hier ist die korrekte Version.
Naja,fast wie kann ich den text für die Tabelle gescheit formatieren?

C++:
#include <iostream>
#include <conio.h>
using namespace std;
int mystrlen(const char* buffer);
int main()
{
char text[]="xxx";

int i=0;              
int anzahl=0;//
int a[1000],b[1000];
char suchwort[256];
int  p=0;
int pruef2=0;;

cout<<"Gesuchtes Wort eingeben: ";
cin>>suchwort;
const int groesse=mystrlen(suchwort);
int pruef=groesse;
while(true)
{
for(i=0;i<groesse;i++)
{
if(text[i+p]==suchwort[i])
{pruef2++;}
else break;
}
if(pruef==pruef2)
{
a[anzahl]=p;b[anzahl]=p+groesse-1;
anzahl++;
p+=groesse-1;
pruef2=0;
if(text[p+groesse-1]=='\0')
{break;}
}
p++;
pruef2=0;
if(text[p+groesse-1]=='\0')
{break;}
}
cout<<"Das gesuchte Wort wurde "<<anzahl<<" mal gefunden!\n";
cout<<"Tabelle der Positionen:\n";
cout<<"Wort           |  von |  bis\n\
------------------------------------------\n"
;
for(int i=0;i<anzahl;i++)
{
cout<<suchwort<<"\t  "<<a[i]+1<<"  \t"<<b[i]+1<<endl;
}
getch();
}
int mystrlen(const char* buffer)
{
    int x=0;
    while(buffer[x] != '\0')x++;
    return x;
};


EDIT: Der Code ist nicht richtig formatiert,weil das die IDE von bloodshed
nicht macht. :D

Dieser Post wurde am 01.10.2003 um 19:59 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
01.10.2003, 21:28 Uhr
~(un)wissender
Gast


Wie nicht?
Ich habe auch Dev-C++ und der rückt ganz hervorragend ein!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: