Wie gebe ich in eine Zeichenkete ein Leerzeichen ein?



  • _matze schrieb:

    gewinn0r initialisat0r schrieb:

    probier es mal mit
    char zeile[7],spalte[7];

    So hast du doch kein 7*7 Spielfeld...

    Stimmt.



  • Sorry, für den Patzer, hier die Nachbesserung:

    enum {zeilen=7, spalten = 7};
    int main( )
    {
    	char feld[zeilen][spalten];
    	memset ( feld, ' ', zeilen * spalten * sizeof(feld[0]));
    ...
    


  • Hab mal beides ausprobiert, ich bekomm bei ' ' und bei 32 beides mal die 0 angezeigt. Bilder konnte ich nicht einfügen???? hätte aber gern anstelle der 0 ein "nichts" angezeigt. Oder mach ich da was falsch??? Bin nicht grad ein Profi 😉

    danke für die tips, aber

    enum
    memset

    sagen mir nichts... Müsste da erst ma mich tiefer einlesen...



  • Zehplusplus schrieb:

    Hab mal beides ausprobiert, ich bekomm bei ' ' und bei 32 beides mal die 0 angezeigt.

    Dann machst du etwas falsch, zeig doch mal deinen Ausgabecode.

    Zehplusplus schrieb:

    Bilder konnte ich nicht einfügen????

    Nope, außer Bücherwerbung glaub ich nicht. Extern hochladen und verliken, das geht.

    Zehplusplus schrieb:

    enum
    memset

    sagen mir nichts... Müsste da erst ma mich tiefer einlesen...

    Das ist eine gute Idee ... -
    Hier wird enum lediglich für die Dimensionierung des char Feldes benutzt und memset setzt alle Elemente auf ' '.



  • Zeig mal deinen aktuellen Code. Wenn du '0' angezeigt bekommst, hast du vermutlich auch '0' zugewiesen? Das enum kannst du dir natürlich sparen, lass dich davon nicht verwirren. Und memset brauchst du auch nicht (auch, wenn's eleganter ist), füll dein Array einfach mit Schleifen, wie du das kennst. Mach die Deklaration wie in meinem Beispiel und fülle das Array dann mit 2 verschachtelten for-Schleifen.

    for(int x=0;x<7;++x) {
      for(int y=0;y<7;++y) {
        spielfeld[x][y]=' ';
      }
    }
    
    //alternativ mit memset:
    memset(spielfeld,' ',7*7*sizeof(char));
    


  • Hier mal das Bild wenn ich 32 eingebe:

    Bild Hosted bei ImagesUp.de

    und hier wenn ich ' ' eingebe:

    Bild Hosted bei ImagesUp.de

    irgendwie ähnlich 🙂

    Hab den Beitrag editiert, es war 2 mal das gleiche Bild



  • Lies dir mal die Doku zu printf durch! Du gibst im Formatstring an, dass ein float ausgegeben werden soll. Ein Zeichen gibt man mit %c aus. Übrigens hast du die bisherigen Hinweise nur teilweise umgesetzt (du hast immer noch kein 7*7 Spielfeld), also lies dir besser die geposteten Antworten noch mal ganz genau durch...



  • Gerade die interessante Stelle wird von der Konsole verdeckt.
    Die Formatierungszeichen %0lf sind schonmal fehl am Platz.



  • Deine Einrückung ist auch grauenhaft (sorry 🙂 ), daher hier ein wenig Lektüre:

    http://de.wikipedia.org/wiki/Einrückungsstil



  • Sorry, wenn ich mit den Sachen nicht so zu Recht komme, viele Dinge sagen mir nichts. Ich will mir nicht die Rosinen rauspicken. Bei manchen Tipps hier zeigt mein Programm mir von vornerein Errormeldungen an, weil ich nicht weiß, was ich zusätzlich abändern muss. Deshalb die mehr oder weniger "einfache" Selektion. ZB was genau ist der Formatstring? Muss ma eure Tipss erst mal austesten 😉



  • Ein Formatstring formatiert die Ein/Ausgabe und ist eher ein Sprachmittel von C, in C++ brauchst du den nicht:

    enum {zeilen=7, spalten = 7};
    char feld[zeilen][spalten];
    
    void kuggi()
    {
    	for ( int i = 0; i < zeilen; i++ )
    	{
    		for ( int j = 0; j < spalten; j++ )
    			cout << feld[i][j];
    		cout << endl;
    	}
    }
    
    int main( )
    {
    	memset ( feld, ' ', zeilen * spalten * sizeof(feld[0]));
    	kuggi();		
    	return 0;	
    }
    


  • enum & memset fan schrieb:

    Ein Formatstring formatiert die Ein/Ausgabe und ist eher ein Sprachmittel von C, in C++ brauchst du den nicht:

    Es gibt aber auch für C++-Prpgrammierer u.U. Momente, in denen man mit Formatstrings arbeiten muss (Beispiel CString::Format der MFC). Insofern finde ich schon, dass man ihm das kurz erklären kann, so dass sein Programm läuft. Alles umwerfen und ihm quasi ein komplett anderes Programm vorkauen geht natürlich auch (und deine Version ist sinniger als seine), aber ich fänd' es auch gut, wenn er seine bisher gemachten Fehler versteht und behebt.

    Mit Formatstring meinen wir den String (Zeichenkette), den du als erstes Argument an printf übergibst. Du platzierst dort neben festem Text auch Platzhalter, die dann den Inhalt von Variablen (dir du im Anschluss übergibst) darstellen. Du hast dort %f notiert, was für eine Fließkommazahl steht. Wenn du ein char ausgeben willst, musst du halt %c nehmen.

    Beispiel:

    char c='A';
    int i=65;
    float f=0.123;
    printf("Der Buchstabe %c hat im ASCII-Code den Wert %d und nicht %f!",c,i,f);
    

    (probier's einfach mal aus)

    Doku zu printf:
    http://msdn.microsoft.com/en-us/library/wc7014hz(VS.71).aspx



  • _matze schrieb:

    Du hast dort %f notiert, was für eine Fließkommazahl steht. Wenn du ein char ausgeben willst, musst du halt %c nehmen.

    Ich hab DEN Satz gelesen, das Programm abgeändert, und es geht 😃 😃 😃 😃 Ich hau mich weg 😃 😃 😃

    Hier das Bild, jetz kann ich weiter machen 😃 😃
    Bild Hosted bei ImagesUp.de
    Ich dank euch vielmals, vor allem wegen der Uhrzeit 🙂



  • Schön, dass du weiter kommst. Denk aber bitte daran, die restlichen Tipps nicht komplett zu ignorieren, ja? 😉



  • Ja, jetzt dämmerts mir. Am Anfang war die Zeichenkette ein float, deshalb %f als String (richtig, dass das ein String ist?). Später hab ich ihn hier auf Raten von euch auf einen char abgeändert, und den String %f nicht abgeändert. Der eine Satz wars. Danke, jetz hats sogar der letzte gerafft 😃



  • Zehplusplus schrieb:

    Hier das Bild, jetz kann ich weiter machen 😃 😃
    Bild Hosted bei ImagesUp.de

    Wenn Du jetzt noch statt A-G lieber 1-7 verwendest, benutzt Du sogar die übliche Notation.



  • Und nimm doch statt 'I' lieber '|'.



  • _matze schrieb:

    Und nimm doch statt 'I' lieber '|'.

    Ok aber wie? welches Zeichen ist das, das kleine L? Oder is das das Zeichen vom logischen ODER? Finde es bei mir nicht, wo ist das? Hab nen Laptop, vlt liegts daran...



  • Zehplusplus schrieb:

    Zeichen vom logischen ODER?

    jepp.
    Alt Gr + <


  • Administrator

    jepp (0r) schrieb:

    Zehplusplus schrieb:

    Zeichen vom logischen ODER?

    jepp.
    Alt Gr + <

    Ich möchte daran erinnern, dass es unterschiedliche Tastaturlayouts gibt. Auf einem schweizerischem wäre es zum Beispiel <Alt Gr> + <7> 😉

    @Zehplusplus,
    Du weisst nicht, wo das logische Oder auf deiner Tastatur ist? Wie programmierst du damit überhaupt? 🙂

    Grüssli


Anmelden zum Antworten