Grosse Probleme mit char



  • Hallo,

    ich hab da ein problem mit char. Benutze den devc++, programmiere aber kein c++, ist eigentlich ansi c.

    Es gelingt mir nicht, einem char Werte zuzuweisen.

    Die Anweisung:

    char c=´A´;

    quittiert der compiler mit der Fehlermeldung:

    stray ´\180´ in program
    stray ´\180´ in program
    ´A´ was not declared in this scope

    Für die einfache Anführung benutze ich das Zeichen rechts vom ß\? ohne Umschalttaste.

    sage ich allerdings:

    char c=32;

    läuft das. Dann hab ich nach meinem Verständnis den Ascii Wert drin.

    Ich will aber mit direkt sichtbaren Zeichen arbeiten wie X, Z, a, d und so weiter.

    Was mach ich falsch?



  • Diese Zeilen:

    strcpy(string1,"Hello");
    printf("Zeichen ist %s",string1[0]);

    da stürzt das Programm ab.

    sage ich allerdings:
    strcpy(string1,"Hello");
    c=string1[0];
    printf("Zeichen ist %d",c);

    Gibt er 72 aus. Will ich die Anzeige mit %s, Absturz.

    Irgendwo hab ich da voll einen Gedankenfehler drin, aber welchen?



  • char string1[128];  //Initialisierung hoffentlich nicht vergessen?
    	strcpy(string1,"Hello");
    	printf("Zeichen ist %s",string1); //so gehts! du hast ein char, keinen String (char*) übergeben
    
    	printf("Zeichen ist %c",string1[0]);  //hier würde es gehen (char erwartet, char übergeben)
    


  • Zu deiner Zuweisung eines Buchstabens an eine Variable, verwende den Hochstrich, der sich auf der Raute-Taste neben der Enter-Taste befindet.



  • Klar, das ist es. 😃

    ´ != '



  • NDEBUG schrieb:

    Zu deiner Zuweisung eines Buchstabens an eine Variable, verwende den Hochstrich, der sich auf der Raute-Taste neben der Enter-Taste befindet.

    Exakt das war es gewesen! Ich hab die ganze tastatur abgesucht, vorher, und das übersehen.

    Er nimmt es jetzt, und mache ich printf mit %i, erscheint wieder die 72, aber mit %c sehe ich endlich mein 'H'.

    Danke für die schnelle Hilfe!



  • pascal2009 schrieb:

    erscheint wieder die 72, aber mit %c sehe ich endlich mein 'H'.

    Zur Erklärung, was "die 72" und was "das 'H'" genau ist und wie das zusammenhängt, kannst du dir bei Interesse das hier mal reinziehen:

    http://de.wikipedia.org/wiki/Ascii

    Da wird erklärt, was der ASCII-Code ist, es gibt eine ASCII-Tabelle usw. Weiterführend ist vielleicht eine Beschreibung von Unicode (=>Google) auch ganz interessant. 🙂



  • _matze schrieb:

    pascal2009 schrieb:

    erscheint wieder die 72, aber mit %c sehe ich endlich mein 'H'.

    Zur Erklärung, was "die 72" und was "das 'H'" genau ist und wie das zusammenhängt, kannst du dir bei Interesse das hier mal reinziehen:

    http://de.wikipedia.org/wiki/Ascii

    Da wird erklärt, was der ASCII-Code ist, es gibt eine ASCII-Tabelle usw. Weiterführend ist vielleicht eine Beschreibung von Unicode (=>Google) auch ganz interessant. 🙂

    Hey, matze,

    danke für deine Bemühungen aber ich hab vor 20 Jahren schon Datenbankanwendungen n Pascal programmiert incl der Sortier-Algorithmen;)

    So einigermaßen blicke ich da schon durch.

    Der kürzlich erfolgte Umstieg auf C ist eigentlich auch ganz gut gelungen, nur es sind so bestimmte Dinge, da hakt es einfach.

    Und für solche Dinge ist es super, daß man hier im Forum so schnell geholfen wird.

    Gruß Pascal2009



  • pascal2009 schrieb:

    Hey, matze,

    danke für deine Bemühungen aber ich hab vor 20 Jahren schon Datenbankanwendungen n Pascal programmiert incl der Sortier-Algorithmen;)

    So einigermaßen blicke ich da schon durch.

    Ok, sorry. Ich wollte dir nicht ungerechtfertigt Unwissenheit vorwerfen. 😉

    Und kleine Umstiegsproblemchen sind mir gut bekannt, ich komme von VB und CA-Clipper... 🤡



  • _matze schrieb:

    pascal2009 schrieb:

    Hey, matze,

    danke für deine Bemühungen aber ich hab vor 20 Jahren schon Datenbankanwendungen n Pascal programmiert incl der Sortier-Algorithmen;)

    So einigermaßen blicke ich da schon durch.

    Ok, sorry.

    Meinst du den alten Clipper mit dbase? Ich bin da etwas raus, was heutzutage so in Gebrauch ist.

    Bzgl. Ascii brauchen wir aber kein Wikipedia, denn:

    //char c; -> char hier nicht so gut (wie gesagt noch Probleme mit Char, aber
    //mit int geht es :

    int main(void)
    {

    for (int i=0;i<256;i++) printf("%i = %c ",i,i); // =Ascii-tabelle

    system("PAUSE");
    return 0;
    }

    Die Ausgabe würde ich zwar nicht gerade als "formatiert" bezeichnen, aber es steht alles drin, bzw. alles, was man mit einem Einzeiler ausdrücken kann. 😉

    Gruß Pascal2009



  • pascal2009 schrieb:

    Meinst du den alten Clipper mit dbase? Ich bin da etwas raus, was heutzutage so in Gebrauch ist.

    Klar, der gute alte Clipper auf dBase-Basis! In meinen Augen eine herrliche, kleine Sprache. Aber von "heute im Gebrauch" kann keine Rede sein, wir waren vermutlich die letzte Firma, die noch mit Clipper und DOS gearbeitet hat (das war 2001-2004, meine Ausbildung). Clipper wird auch seit '95 nicht mehr weiterentwickelt, leider...



  • _matze schrieb:

    pascal2009 schrieb:

    Meinst du den alten Clipper mit dbase? Ich bin da etwas raus, was heutzutage so in Gebrauch ist.

    Klar, der gute alte Clipper auf dBase-Basis! In meinen Augen eine herrliche, kleine Sprache. Aber von "heute im Gebrauch" kann keine Rede sein, wir waren vermutlich die letzte Firma, die noch mit Clipper und DOS gearbeitet hat (das war 2001-2004, meine Ausbildung). Clipper wird auch seit '95 nicht mehr weiterentwickelt, leider...

    Sie froh daß du jetzt bei C gelandet bist!

    Ich hab kürzlich ein paar geometrische Anwendungen programmiert mit Millionen datensätzen, das schafft der Dev++ in Sekunden, so ein Clipper würde dafür eine ganze Woche benötigen!

    Clipper ist nur gut, wenn man eine festplattengestützte Datenbankanwendung Marke:

    WIR HABEN ZEIT FÜR EINEN INDEXDURCHGANG EINE STUNDE ZU WARTEN
    WEIL WIR AUCH WENN WIR WARTEN GEHALT KRIEGEN

    Ich hab damals die Turbo-Pascal Database benutzt, die ist um den faktor einige Tausend mal schneller. Leider gibts das alles nicht mehr, kein DOS, kein Turbopascal.

    Windows halte ich für solche Anwendungen für einen extremen Rückschritt. Oder anders gesagt, um eine vernünftige Schnittstelle am Bildschirm zu erzeugen, ist der Programmieraufwand um den Faktor 1000 gestiegen.

    Mit dem alten turbo-pascal Compiler hatte man im DOS Modus die Möglichkeit, beliebig viele Fenster zu öffnen.

    C hat keine Fenster_Routinen, da bin ich gerade dran am knabbern, wie ich die Bildschirm-Schnittstelle hinkriege. Schaffe ich wohl ohne Hilfe gar nicht, weil mich jetzt noch in irgendein GUI wochenlang einzuarbeiten, die Zeit wär gar nicht da.

    Gruß Pascal2009


Anmelden zum Antworten