"We are back" « oc.at

C++ Beispiel - wo is da der Fehler??

Bimminger 08.12.2001 - 00:03 1032 4
Posts

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
Ich sollt da drin den Fehler findn - aba i findn net. is a beispiel, wos drum geht, dass ma a char*-Stringpointer in an Array ablegen kann und so...

-------------------------------------------------------
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define MAX 100

void sort(char **,int);
void main(void)
{
char *feld[MAX];
int i,anz;
char eingelesen[129];
anz=0;
printf("Wort eingeben: \n");
gets(eingelesen);
while (strlen(eingelesen) != 0)
{
feld[anz]=(char *)malloc(strlen(eingelesen)+1);
strcpy(feld[anz],eingelesen);
anz++;
printf("Wort eingeben: \n");
gets(eingelesen);
}
sort(feld,anz);
for (i=0;i<anz;i++)
{
printf("String %d: %s\n",i+1,*feld[i]);
free(feld[i]);
}

getch();
}

void sort(char **feld,int anz)
{
int i,j;
char *help;
for (i=0;i<anz-1;i++)
for (j=i+1;j<anz;j++)
{
if (stricmp(feld[i],feld[j]) >0)
{
help=feld[i];
feld[i]=feld[j];
feld[j]=help;
}
}

}
-------------------------------------------

mfG CB

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Naja, das mit dem gets() kann nicht hinhauen, weil das am Ende NULL liefert, und davon kann man kein strlen() machen. Sonst seh ich jetzt auch nix.

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
Richtig probleme macht er beim

for (i=0;i<anz;i++)
{
printf("String %d: %s\n",i+1,*feld[i]);
free(feld[i]);
}


da hat er bereits im ersten schleifendurchgang, bei i=0, irgendwelche probleme. in VCPP (konsolenanwendung) bringt er einen "unerlaubten speicherzugriff" -> deutet auf nen falschen pointerzugriff hin... hab aber auch mitn debugger nix rausgfunden.

mfG CB

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Zitat von Bimminger
Richtig probleme macht er beim

for (i=0;i<anz;i++)
{
printf("String %d: %s\n",i+1,*feld[i]);
free(feld[i]);
}


da hat er bereits im ersten schleifendurchgang, bei i=0, irgendwelche probleme. in VCPP (konsolenanwendung) bringt er einen "unerlaubten speicherzugriff" -> deutet auf nen falschen pointerzugriff hin... hab aber auch mitn debugger nix rausgfunden.

Da is ein * zu viel.

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
wow - thx!! tja da hab wohl auch ich mich mit der referenz auf die referenz verhaut... DANKE, JETZT GEHTS!

mfG CB
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz