#include <stdio.h> #include <string.h> #include <ctype.h> #include <limits.h> //architektur #include <stdlib.h> #define true 0 int fehlercode (char **fehlermeldung); int main(){ char **fehlermeldung; fehlercode(fehlermeldung); printf("%s",*fehlermeldung); } int fehlercode (char **fehlermeldung) { unsigned int max,i=0; int a,b; double zahl,maxx; char eingabe[300]; printf("\nBitte geben sie irgendeine Zeichenkette ein\n"); fflush(stdin); fgets(eingabe,300, stdin); if(eingabe == NULL) return 1; if((eingabe[0] == '+')) return 1; //Verhindert akzeptanz von + if((eingabe[0] == '-'))i++; //Erlaubt - (eigentlich Unsinn) while(eingabe[i] != '\n') if(!isdigit(eingabe[i++])){ //Ueberprueft nach und nach den Array ob er aus Zahlen besteht *fehlermeldung="Buchstabe"; return 1;} //Rueckgabe von "false" wenn Buchstabe oder + im string max=(UINT_MAX); //Einlesen der maximalen Groesse von unsigned integer zahl= atof(eingabe); //Umwandlung des Strings in einen Double Wert maxx=(double)max; if (zahl>max){ printf("zahl zu gro�"); *fehlermeldung="Die Zahl ist leider zu gro�"; return 1; //Wenn Zahl groesser unsigned int dann return 1 } if (zahl<0){ *fehlermeldung="Zahl kleiner 0"; return 1; //Wenn Zahl kleiner 0 return 1 } *fehlermeldung="Alles i.O."; }
Unter Unix läuft das ganze perfekt, wenn ich das ganze unter Linux/Windows ausführen möchte bekomme ich einen Segmentation Error. Kann mir wer sagen woran das liegt.
Compiler wirft keine Fehlermeldung raus!
Dieser Beitrag wurde von bbrickwedde bearbeitet: 08. November 2006 - 22:21