ft printf 6 1日目(置換...)


前の質問


クラスタでGNL評価を受けた場合,ft printf()に提案を求めた.
だから私の結論は覆す必要があるかもしれません.しかし、完全にひっくり返すのではなく、ゆっくりしてみましょう.
これまで、私が符号化を書いた問題は、コード全体を一度に書くことです.
GNLでは別にコーディングをしていますが、うまくできているか確認するのが難しく、森を見るようにコーディングをしています.だから今回ft printf符号化の時も中間確認ではなく、コード全体を編成して最後に確認したいです.しかしft printf()とGNLの違いは
GNLはft printfよりも簡単な課題である.
ft printfは多くの関数を記述するだけでなくflagやwidthなど多くのオプションを計算する必要があるため,一度に記述するのは難しいようだ.
そこで、森を作るために、一本の木のように、関数を一つずつ編み始めました.

したがって、優先編成される部分は整数型d를 아무 옵션 없이 출력하기である.

flagの構成


まずft printfです.cファイルにtagをチェックする関数を作成します.

ft_format_tag()

static int	ft_format_tag(char **format, t_list *tag, va_list ap)
パラメータは次のとおりです.デュアルポインタを使用してformatを受信し、アドレス値を超え、「0」に遭遇した場合、ERRORを返します.
初めて出会ったオプションはflagなのでft flag()を使用してflagを確認する関数を作成します.

ft_flag()

void	ft_flag(char **format, t_list *tag)
この関数はft tagです.cファイルに作成されます.
	while (ft_strchr_opt(**format, FLAG))
この繰り返し文条件でflagが文字がFLAG文字列に存在するかどうかをチェックすると、SUCCESSが返され、繰り返し文が返されます.
でも好奇心があるのは!
	while (ft_strchr_opt(**format, FLAG) == SUCCESS)
どうしてだめなの.これさえ分かればいい
	while ((res = ft_strchr_opt(**format, FLAG)) == SUCCESS)
使えない...

切り取った部分..。(ダブルポインタ)

		if (**format == '0')
			(tag -> zero) = EXEC;
		(*format)++;
ft flag()関数の一部.上の図に示すように、元の2つのポインタから文字列のアドレス値を渡すには、次の手順に従います.
本来は(*format)++という形で伝えるべきだったのですが、うっかりformat++でエンコードしてしまい、ずっとエラーが…