特定の文字定数の数値(if
ステートメントの数値)を表示するプログラムを作成しようとしています。 1つの問題を除いて、コードは機能します。出力は列内でうまく整列されているはずですが、以下に示すように出力は正しくありません。列を適切に整列させる最善の方法は何ですか?ここでC出力の列の整列
は私のコードです:
#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;
}
は、ここで出力です:
ここでの良い解決方法は、書式文字列の文字列整列/長さオプションです。あなたはタブを使って正しい軌道に乗っていますが、説明欄の長さが変わっているのであなたを捨ててしまいます。 'printf("% - 30s "、description)を開始点として試してみてください。 –
コードがうまくいけばhttp://codereview.stackexchange.com/より適しています –
列が並んでいるが、ギザギザになっているので動作しません –