0

フォーマットを使用して *printf() 関数ファミリによって出力文字列から文字を削除する方法は? それが可能だ?

マクロからこのマクロ:

  char *s =
    g_strdup_printf(
    "insert into foo(name,serie,"
#define X(a, b) #a ","
    LIST ") "
#undef X
#define X(a, b) "%d,"
    "values('%s'," LIST "%d" ")",
#undef X
#define X(a, b) bol->a,
    boletim->aname, serie, LIST
#undef X
            );

次のような出力が得られます。

  char *s =
    g_strdup_printf(
    "insert into foo(name,serie,"

    "red" "," "blue" "," "yellow" "," "purple" "," ") "


    "values('%s'," "%d," "%d," "%d," "%d," "%d" ")",


    boletim->aname, serie, boletim->red, boletim->blue, boletim->yellow, boletim->purple,

      );

puts(s)呼び出しにより、次のように出力されます。

insert into foo(name,serie,red,blue,yellow,purple,) values('Ari tol',-1,-1,-1,-1,0)

しかし、SQL クエリを無効にする,前に問題があります。)文字列からそれを削除する方法を探しています。printf()おそらく、関数ファミリーで使用したり、マクロを再定義したりできるフォーマットによって可能です。知らない。)これは、インデックスによる文字列置換関数への別の呼び出しの最初とその後にインデックスを検索するルーチンを作成しないようにするための試みです。

4

1 に答える 1

1

プリプロセッサ レベルで削除することはできません。ただし、この場合、X を定義して、各項目のにコンマを置き、 "serie" と "'%s'" の後のコンマを削除できます。

于 2012-11-05T16:38:03.620 に答える