Sto provando a scrivere un programma che visualizza il valore numerico di alcune costanti di caratteri (quelle nelle istruzioni if
). Il codice funziona, tranne per un problema. L'output dovrebbe essere ben allineato in colonne, ma come mostrato di seguito, non lo è. Qual è il modo migliore per allineare correttamente le colonne?Allineamento colonne in uscita C
Ecco il mio codice:
#include <stdio.h>
#include <ctype.h>
int main() {
unsigned char c;
printf("%3s %9s %12s %12s\n", "Char", "Constant", "Description", "Value");
for(c=0; c<= 127; ++c){
if (c == '\n') {
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\\n","newline","0x", c);
}else if (c == '\t'){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\\t","horizontal tab","0x", c);
}else if (c == '\v'){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\\v","vertical tab","0x", c);
}else if (c == '\b'){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\\b","backspace","0x", c);
}else if (c == '\r'){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\\r","carriage return","0x", c);
}else if (c == '\f'){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\\f","form feed","0x", c);
}else if (c == '\\'){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\\","backslash","0x", c);
}else if (c == '\''){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\'","single quote","0x", c);
}else if (c == '\"'){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\"","double quote","0x", c);
}else if (c == '\0'){
printf("%3d %7s \t%s \t\t%s%03x\n", c,"\\0","null","0x", c);
}
}
return 0;
}
ecco l'output:
Una buona soluzione qui è l'opzione di giustificazione/lunghezza stringa nelle stringhe di formato. Sei sulla strada giusta con le schede, ma perché hai lunghezze diverse nella colonna della descrizione ti sta buttando fuori. Potresti provare 'printf ("% - 30s ", description) come punto di partenza. –
Se il codice funziona, è più adatto su http://codereview.stackexchange.com/ –
Non funziona in quanto le colonne devono essere allineate ma sono frastagliate –