C Programm keine Ausgabe unter Win läufts !?

jap

Aktives Mitglied
Thread Starter
Dabei seit
16.06.2004
Beiträge
140
Reaktionspunkte
1
Hallo alle!

Habe ein großes Problem bei einem C Programm:
Es soll in einen Stack mittels einer Funkt. push() dynamisch Strukturen eingehängt werden die die Koordinaten x, y u. z beinhalten.
pop() entfernt dann jedes einzelne Element vom Stack und gibt dieses nacheinander aus.

Einlesen klappt wunderbar. Als Ausgabe erhalte ich jedoch nichts!

Auf einem Win Rechner compiled erhalte ich eine Ausgabe!

ich verwende OS X Panther 10.3.9

Bin total ratlos! Ich hoffe jemand kann mir weiterhelfen! Testet es doch bitte mal auf eurem OS X obs an Panther liegt oder nicht!
Vllt liegts ja auch am Compiler...

Hier mal der Quellcode:
Code:
#include<stdio.h>
#include<stdlib.h>

struct point
{
    float x;
    float y;
    float z;
};

struct umverpackung
{
    struct point points;
    struct umverpackung *next;
}; 

struct umverpackung *ptr_top;

struct point readPoint(void)
{
    struct point newpoint;
    printf("\nBitte x-Koordinate eingeben: ");
    scanf("%f", &newpoint.x);
    printf("Bitte y-Koordinate eingeben: ");
    scanf("%f", &newpoint.y);
    printf("Bitte z-Koordinate eingeben: ");
    scanf("%f", &newpoint.z);
    return newpoint;
}

void push(struct point newpoint)
{
    struct umverpackung *ptr_malloc;
    
    ptr_malloc = (struct umverpackung *) malloc(sizeof(struct umverpackung));
    ptr_malloc->points = newpoint;
    
    ptr_malloc->next = ptr_top;
    ptr_top = ptr_malloc;
}

struct point pop(void)
{
    struct umverpackung *ptr_oldtop;
    struct point ausgabe;
    
    ausgabe = ptr_top->points;
    
    ptr_oldtop = ptr_top;
    ptr_top = ptr_top->next;
    
    free(ptr_oldtop);
    
    return ausgabe;
}

void printStackElement(struct point aPoint)
{
    printf("x= %f.2 y= %f.2 z= %f.2", aPoint.x, aPoint.y, aPoint.z);
}

int isEmpty(void)
{
    return ptr_top == NULL;
}

int main(void)
{
    char option;
    ptr_top = NULL;

    while(1)
    {
        printf("'p' fuer Punkt eingeben, 'q' fuer Ausgabe: ");
        scanf(" %c", &option);
        
        if(option == 'p') //add new point
        {
            push(readPoint());
        }
        else if(option == 'q')
        {
            while(isEmpty()==0)
            {
                printStackElement(pop());
            }
            return 0;
        }
    }
}

Hoffe es ergibt sich etwas!
 
Zuletzt bearbeitet:
Tja, da haste aber Glück gehabt das es unter Windows funktioniert.

Du prüfst
Code:
while (isEmpty==0)
versuchs mal mit
Code:
while (isEmpty()==0)
 
Nein immernoch keine Ausgabe!

Die () hab ich vergessen wieder dran zu schreiben hatte die auch mal entfernt und es über eine variable gemacht um zu testen (man macht ja so manches wenn man nicht mehr weis was los ist)

Hast Du es mal compiliert?
 
Bei mir nicht, wie gesagt die waren vorher auch schon dran habs eben nochmal selbst getestet (gcc -o name name.c && ./name) wenn sie dran sind und bekomme keine Ausgabe!
Liegts dann wohl an Panther?
 
jap schrieb:
Liegts dann wohl an Panther?

Hmmm... kann ich mir irgendwie nicht vorstellen. Ich hab allerdings Tiger und da funktionierts ja anscheinend. Ich seh so spontan nix in dem Quellcode was mit Panther nicht funktionieren würde. Woher hast du denn den Compiler? Hast du den mit den XCode-Tools installiert?
 
Ja hab mir das Xcode geladen von der developer Seite... ich schau da jetzt nach obs etwas neueres gibt wer weis... bin schon ratlos.. :/
 
Zuletzt bearbeitet:
Zitat der Apple Developer Connection Download Seite:

gcc Updaters
The November 2004 gcc 3.3 updater provides improvements to C++ compatibility and debugging of code build using dead code stripping. This updater can only be applied to Xcode Tools 1.5. The August 2003 gcc updater GCC updater includes the GCC 3.3 compiler in addition to other updates that will allow development of G5 optimized code using the December 2002 release of the Mac OS X Developer Tools.

Welchen nehm ich jetzt von den beiden?
Wie bekomm ich raus welche Version mein gcc hat?
Ich hab 1.5 drauf wegen 10.3.9

Hab nun GCC aktualisiert: funktioniert noch immer nicht! also noch immer keine Ausgabe.

Hab eben nochmal die Bestätigung das es unter Win eine Ausgabe macht und auch bei Tiger wie *-jalapeno-* schrieb bekommt man eine Ausgabe.

Was kann hier los sein?
 
Zuletzt bearbeitet:
Problem gelöst:
Hatte bis gerade eben die zshell anstatt der bash in Verwendung.
In der bash compiliert erhalte ich eine Ausgabe der Werte!!!

Vielen Dank *-jalapeno-* für deine Hilfe, echt nett!

bis bald mal wieder mit eineem neuen Problem :p
 
Zurück
Oben Unten