unverständliche speicherzugriffsverletzung

tja vielleicht kann ja wer von euch mir helfen

 

heo

in meiner schule (htl für informationstechnik) benutzen wir zur programmierung ( C,C++) leider windows, also windows compiler (borland C++ builder )

auf meiem desktop daheim programmiere ich dann mit linux, bis jetzt hat alles gut funktioniert, aber
bei diesem programm bekomme ich unter windows kein fehlermeldung, unter linux bekomme ich aber:
Program has been terminated receiving signal 11 (Segmentation fault) (das bedeutet speicherzugriffsverletzung soviel ich weis)
wie gesagt unter windows läuft es einwandfrei

also ich benutze die anjuta ide,habe die neuesten compiler (gcc,g++) installiert

was könnte es da habn :

 

// --- includes -----------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

// --- prototypes ---------------------------------------------------
char * StrRTrim (char *s);// loescht alle rechten Spaces des Strings /s/
// BSP-Aufruf : char *s;
//              s = StrRTrim ("hallo      \n");
//              #Ausgabebeginn:hallo:Ausgabeende (rechte Spaces geloescht)

int main (void) {
  char *test1="        WUHU                \n";

  printf("-%s- \n",StrRTrim (test1));
  getchar();
  return 1;
}

char * StrRTrim (char *s) {
  int i;
  i = strlen (s)-1; // letztes benutzbares Stringelement
  while ( i>= 0  )
    if (isspace(s[i])) { // letztes Zeichen Spacezeichen?
      s[i] = 0;          // Spacezeichen ueberschreiben
      i--;               //vorhergehendes Zeichen auswaehlen
    } else
      i = -1;            // Sprung aus Schleife weil kein Spacezeichen
  return s;
}

hm...

Hi, nachdem sonst niemand antwortet zumindest ein kleiner Hinweis: Mit aktuellen gcc/g++ Versionen wirst du mit so einem Quelltext nicht viel Freude haben, ich hab kurz Anjuta installiert & allein ein kurzes "Hello World" sieht unter Linux / g++ 4.1.1 ziemlich anders als im Windows/Dos BorlandC++ Quelltext aus:

#include <iostream>
int main() {
std::cout << "Hello world" << std::endl;
return 0; }

Ich hab noch ein wenig mehr herumprobiert (das letzte mal dass ich BorlandC++ programmiert hab, war ca. 1998 *g*), das Problem scheint am char * bzw isspace zu liegen (soweit ich durch ein wenig suchen herausgefunden hab, gibts unter gcc std:string u.ä.).
Vl. hat jemand eine bessere Idee - und wenn dir weranders besser hilft, bitte poste hier kurz wie's geht Wink

__________________

Website, MicroBlog, Jabber:image

Es gibt ja ohnehin verdammt

Es gibt ja ohnehin verdammt gute C++ bücher. Eins kaufen und los gehts Wink In meinem C Buch - "C von a bis Z" - wird man auf systemspezifische Sachen aufmerksam gemacht. Deshalb würde ich dir persönlich "C++ von a bis Z" empfehlen. http://www.pronix.de/pronix-1057.html bzw. http://www.galileocomputing.de/katalog/buecher/titel/gp/titelID-1278

__________________

Website, MicroBlog, Jabber:image

hi,ich würde an deiner

hi,

du gibst in main() "1" als rückgabewert.
...wenn ich mich nicht irre bedeutet das: "porgramm beenden und fehler melden"

>> es müsste "return 0" heissen !

Wenn nicht, einfach ma durch den debugger laufen lassen;)

Gruss darrell