Frage

Nun, nicht zufällig, weil sein jedes Mal die gleiche, aber

#include<iostream>
using namespace std;
int main()
{
    char box[10][10];
    for(int i=-1;i<11;i++)
    {
        cout<<"---------------------"<<endl<<"|";
        for(int j=0;j<10;j++)
        {
            cout<<box[j][i]<<"|";
        }
        cout<<endl;
    }
    intx;cin>>x;
    return 0;
}

gibt eine Reihe von internationalen Zeichen (na ja, nicht alle von ihnen sind ‚international‘ per se, aber ich Dinge wie pi und spanisch umgekehrte Fragezeichen). Wie auch immer, ich weiß, das den Programmzugriff Zeichen ist becuase, die nicht initialisiert, aber warum bestimmte Symbole erstellen bestimmte Werte haben, was sind die ASCII-Werte der Symbole (wenn sie ASCII-Werte haben) und wie kann ich die Symbole erhalten, ohne Glitching mein Programm?

War es hilfreich?

Lösung

Ihre Schleife über i macht keinen Sinn ...

for(int i=-1;i<11;i++)

Dies wird zwei Indizes treffen, die nicht gültig sind, -1 und 10, wenn Sie Feld Referenz hier:

cout<<box[j][i]<<"|";

Es sollte 0 bis <10 wie die andere Schleife sein.

Auch haben Sie nicht den Inhalt der Box um alles initialisiert, so dass Sie den Druck auf nicht initialisierten Speicher. Sie haben etwas in die „Box“ setzen, bevor Sie etwas herausfinden kann.

Die Symbole selbst wahrscheinlich ASCII erweitert werden, kann man sie durch jede erweiterten ASCII-Tabelle erhalten. Dieser eine auf Google zuerst kam. Zum Beispiel könnten Sie tun:

cout << "My extended ascii character is: " << (char)162 << endl;

ein verrücktes internationales o erhalten.

Andere Tipps

Aus dem gleichen Grunde, dass

#include <iostream>
using namespace std;
int main()
{
   int x;
   cout << x;
}

zeigt einen Zufallswert. Uninitialised Variablen (oder Arrays) enthalten Müll.

  
    

for (int i = 1; i <11; i ++)

  

Diese Linie ist verdächtig. -1 bis 10? Sollte 0 bis 9.

Der ASCII-Code ist

(int)(box[j][i])

Sie drucken nur gewöhnliche chars, die von 0 bis 255 mit Codes ASCII-Zeichen sind. Beim Drucken wchar_ts die gleichen Speicher wie andere Zeichen interpretiert wird.

Ihre Schleife sollte in [0 sein; 10 [nicht in [-1; 11 [

Die Symbole von dem Programm angezeigt wird, hängen auf:

  • die Inhalte, die in den nicht initialisierten Variablen werden passiert, und
  • das Gebietsschema des Computers oder die Codierung in der Darstellung verwendet wird.

Ein Unicode Referenz wahrscheinlich die beste Quelle für die Identifizierung der Codes wäre erforderlich bestimmte Symbole angezeigt werden.

Beachten Sie, dass die Benutzer nicht die gleiche Codierung standardmäßig ausgewählt (oder Schriftarten mit den richtigen Symbolen) aufweisen. Sie sollten entweder die aktuelle locale überprüfen, oder ein speziell auf Ihre Ausgabe zwingen die Ausgabe macht die Art und Weise Sie wollen zu gewährleisten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top