したがって、Cでchar配列のセグメントのみを印刷することについて多くの質問があることを知っており、それらを読みました。私の質問は本質的に似ていますが、少しひねりがあります。以下のコードの場合、fmt
配列の最初の 4 文字だけを出力するにはどうすればよいですか? 変更は許可されていないため、値、改行、および 1 つのスペースのみを出力することを指定するfmt
ために使用する必要があります。VAL
#define VAL 4
int main() {
char fmt[10] = "%d\n ";
int value = 1;
printf(fmt, value);
}
編集:
必要なのはこれだけだと感じたので、これは私のコードのほんの一部です。さらに必要な場合は、残りのコードを提供します。
EDIT2:
制限: 新しい変数はありません & 出力する fmt 配列の量を指定するには、VAL を使用する必要があります。
EDIT3 (完全な質問):
変数宣言を追加せずに、プログラムの不足部分を埋めます。入力した整数値をどのように出力するかをユーザーに選択してもらいます。(すべてがわからない場合は、printf の整数書式指定子を調べてください。) 指定された書式指定子文字を使用して、以前に入力された整数を出力し、その後に return を入力してから、別の書式文字を再プロンプトします (ただし、新しい整数)。複雑さの限界を下回ることは、課題の主要な部分です。どの種類のループを選択するか、および書式指定子文字をどのように読み取るかについては柔軟に対応してください。また、フォーマット文字列の %c の前に空白がある場合、scanf は文字を読み取るときに空白をスキップすることに注意してください。また、その VAL 定義には重要な用途があり、出力内の偽の空白を取り除くことが含まれます。そして最後に、さえしないでください大きなスイッチまたは if- elseブロックでこれを行うことを検討してください。
#include <stdio.h>
#define VAL 4 // You might want this
int main() {
char fmt[10] = "%d\n "; // Quickly initializes fmt array
int value;
printf("Enter an integer: ");
scanf("%d", &value);
//from here below is my code, above code is pre-provided
printf("Enter a format specifier (x, X, c, d, i, o, or q to quit): ");
scanf(" %c", &fmt[1]);
while (fmt[1] != 'q') {
printf("%4s", fmt, value);
printf("Enter a format specifier (x, X, c, d, i, o, or q to quit): ");
scanf(" %c", &fmt[1]);
}
}