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
Website, MicroBlog, Jabber:
Es gibt ja ohnehin verdammt
Es gibt ja ohnehin verdammt gute C++ bücher. Eins kaufen und los gehts
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:
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