1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Problem bei char Zuweisung für eine Zahl in c

Dieses Thema im Forum "OS X-Developer" wurde erstellt von derfred, 06.12.06.

  1. derfred

    derfred Gast

    hallo miteinander

    ganz kurz: maschinenbaustudium, erstes semester, software engineering, c-Programmierung; alle nehmen visualstudio.net her, was ich zwar unter guestpc laufen lassen könnte, will mein ibook aber nicht mit windows zumüllen (der speicher wird eh schön langsam knapp) --> ich nehme xcode her

    bisher hat alles ganz gut geklappt, doch jetzt habe ich das erste problem, welches mit gleichem quelltext unter windows nicht auftritt:
    einfaches programm - seht selbst:


    #include <stdio.h>

    int main()
    {
    int iZahl= 0;
    printf("\n\nBitte ganze Zahl eingeben:\t");
    scanf(" %d",&iZahl);
    printf("| ASCII | DEZ | HEX | OKT |\n");
    printf("| %c | %d | %x | %o |\n",iZahl,iZahl,iZahl,iZahl);

    return 0;
    }



    PROBLEM: bei zahlen zw 0 und 128 macht er eine ordentliche char zuweisung, ab 128-256 jedoch schreibt er mir nicht die großen buchstaben, sondern gibt mir lauter werte im stil: \201 aus

    bitte helft mir - ich hatte zwar heute schon abnahme des programms, möchte es aber doch verstehen, was da anders läuft


    ach ja, ein ähnliches problem habe ich im folgenden programm:


    #include <stdio.h>

    int main()
    {
    unsigned char cZeichen= 0;
    printf("\n\nBitte beliebiges Zeichen eingeben:\t");
    scanf(" %c",&cZeichen);
    printf("| ASCII | DEZ | HEX | OKT |\n");
    printf("| %c | %d | %x | %o |\n",cZeichen,cZeichen,cZeichen,cZeichen);

    return 0;
    }


    da gibt er mir anstatt ein ö, oder ähnliches auch werte im stil \303 aus, trotz unsigned char.



    danke für eure antworten, fred
     
  2. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    Der Fehler liegt an Xcode. Schau dir deine compilierten Programme direkt im Terminal an, dann dürfte es gescheit funktionieren.

    Die "Shell" in Xcode ist eher rudimentär und nicht zum testen von ernsthaften Kommandozeilenprogrammen geeignet.
     
  3. derfred

    derfred Gast

    ok, danke squart

    und wie macht man das? ;)
     
  4. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    OK, ich werde jetzt nicht genauer auf das Terminal eingehen, sondern nur eine Quick&Dirty Lösung dir anbieten. Falls du genaueres über eine Shell lernen willst, wirst du hier viele Threads finden, welche das navigieren und ausführen von Kommandozeilenprogrammen behandeln.

    Wenn du dein Xcode-Projekt compiliert hast, findest du in deinem Projektordner den Unterordner build/Debug/ und dort eine Datei mit dem Namen deines Projektes. Nun klicke mit gedrückter CTRL-Taste (Rechtsklick) auf diese Datei, im Menü welches erscheint wählst du "Öffnen Mit"->"Terminal.app".
    Alternativ öffnest du das Terminal (findest du unter "Dienstprogramme") und ziehst die Datei einfach darein. Danach musst du Enter drücken und dein Programm wird gestartet.

    Hoffe, dass dir dies hilft, allerdings würde ich dir raten, dich etwas mehr mit dem Terminal auseinander zu setzen. Versuche einfach mal ein C-Programm nur mittels Terminal zu schreiben und zu compilieren (Einfacher Text-Editor in der Kommandozeile wäre "pico", zum compilieren einfach "gcc" verwenden). Sobald du dies geschafft hast, dürfte dir auch klar sein, wozu solche Programme wie du sie zur Zeit schreiben musst geeignet sind.

    Viele Grüße
    Squart
     
  5. derfred

    derfred Gast

    ich habe es jetzt im terminal laufen lassen --> resultat: gleiche fehler, jedoch werden sie nicht mehr als \132 oder so ausgegeben sondern als ¿ .
     
  6. Squart

    Squart Pomme Etrangle

    Dabei seit:
    29.01.04
    Beiträge:
    910
    OK, ich denke mal, dass du nicht weißt, wie die ASCII-Tabelle aussieht. Teste mal folgendes Programm, um an eine ASCII-Tabelle zu kommen:
    Code:
    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
    	unsigned int x, y;
    	for (y = 2; y < 16; y++) {
    		printf("%3.d - %3.d:  ", (y*16), (y+1)*16);
    		for (x = 0; x < 16; x++) {
    			printf(" %1.c |", (char)(x+16*y));
    		}
    		printf("\n");
    	}
    	return 0;
    }
     

Diese Seite empfehlen