2016-08-02 16 views
0
#include "stdio.h" 
int main() 
{ 
    int toes = 10; 
    printf("toes=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes); 
    return 0; 
} 

// Dies ist eine Übung aus c Primer plus. Nach dem Kompilieren und Ausführen funktioniert nur die zweite \ t.Warum das erste nicht funktioniert?

+1

Was meinen Sie mit _ \ t work_ nicht? – pzaenger

+2

Es funktioniert, aber es braucht nicht mehr als einen Platz in der visuellen Darstellung? Versuchen Sie es über einen Hexdump auszuführen, oder kopieren Sie es und fügen Sie es in einen Editor ein, in dem spezielle Whitespace-Zeichen angezeigt werden. – moooeeeep

+0

Eine Registerkarte fügt keine x-Leerzeichen ein. Er richtet die Ausgabe an Spalten im Konsolenfenster aus. –

Antwort

6

Es funktioniert gut für mich. (example)

Output:

toes=10 2toes=20  toes2=100 

anzumerken, dass \t Mittel "tabellieren", oder mit anderen Worten, um Kissen zu dem nächsten Vielfachen von N Position, wo N Regel 8 ist.

toes=10 braucht 7 Zeichen, um das nächste Vielfache von 8 zu erreichen, müsste 1 Leerzeichen gedruckt werden.

+0

'2toes = 20' dauert 8 Zeichen, so dass die Ausrichtung auf das nächste Vielfache von 8 erfordert 8 Leerzeichen (unter der Annahme, Tab-Größe ist 8). – rustyx

+0

Antworten auf eine externe Verbindung sind nutzlos. Und es gibt einen nahe liegenden Grund, wenn es in der Frage kein Problem gibt. – Olaf

+0

Entschuldigung ?? Dann zeigen Sie mir eine Möglichkeit, ein C-Programm direkt auf SO zu kompilieren und auszuführen. – rustyx

2

Tabs Einrückung Text an festen Positionen. Dies bedeutet, dass sie keine Lücke von 4 Lücken bilden, sondern eine Lücke bilden, bis die nächste markierte Position übereinstimmt.

toes=10 2toes=20  toes2=100 
1234567812345678123456781234567812345678 

Es ist ein unglückliches Beispiel. Deine Tabs sind 8 lang. Also hören sie alle 8 Buchstaben auf. Wenn Sie ein Leerzeichen vor dem ersten \t hinzugefügt haben, würde Ihr Tab eine größere Lücke bilden.

Bessere Ausgabeformatierung würde erreicht werden durch:

printf("%s%s%s\n", " single", " double", " square"); 
printf("%7d%7d%7d\n", toes, 2*toes, toes*toes); 

Ausgang:

single double square                                                         
    10  20 100 
0

Ein \t Charakter wird nicht den gleichen Raum nehmen immer, es wird auf eine Säule einzustellen.

Wenn Sie eine feste Anzahl von Leerzeichen zwischen Ihren Einträgen haben möchten, geben Sie sie manuell zwischen Ihren Werten ein.

1

Es funktioniert, aber es scheint, als wäre es nicht !!!

Dies ist, weil Sie standardmäßig eine tabspace gleich 8spaces haben. Und toes=10 nimmt 7 Leerzeichen, und nur 1 Platz, wenn für die \t Platz zu füllen.

Um zu sehen, dass es ändern arbeitet Ihr printf zu:

printf("ts=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes); 
Verwandte Themen