2

プロファイルのデフォルト パスとして /usr/xpg4/bin を使用しています。変数「curr_date」の出力をここに出力しています。

   lt = time(NULL);
   ltime=localtime(localtime(&lt));
   strftime(curr_date,sizeof(curr_date),"%m/%d/%y%C",ltime);

「06/27/1320」ではなく、「06/27/13Thu Jun 27 02:39:34 PDT」として出力されます。

ここで機能するフォーマット指定子が何であるか知っていますか?

ありがとう

4

2 に答える 2

0

$PATH で を使用すると/usr/xpg4/bin、標準に準拠したコマンドが選択されるだけで、プログラム内の関数呼び出しが標準に準拠したバージョンを使用するように変更されることはありません。

Solaris の標準 (5) マニュアル ページで説明されているように、さまざまな標準への準拠を指定するために使用する必要があるさまざまな #defines とコンパイラ フラグがあります。

たとえば、コード スニペットを取得して、次のスタンドアロン テスト プログラムに展開します。

#include <sys/types.h>
#include <time.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    time_t lt;
    struct tm *ltime;
    char curr_date[80];

    lt = time(NULL);
    ltime = localtime(&lt);
    strftime(curr_date, sizeof(curr_date), "%m/%d/%y%C", ltime); 
    printf("%s\n", curr_date);
    return 0;
}

次に、さまざまなフラグでコンパイルすると、さまざまな動作が示されます。

% cc -o /tmp/strftime /tmp/strftime.c
% /tmp/strftime
06/30/13Sun Jun 30 20:28:00 PDT 2013

% cc -xc99 -D_XOPEN_SOURCE=600 -o /tmp/strftime /tmp/strftime.c
% /tmp/strftime
06/30/1320

デフォルトモードは、従来の Solaris コードと下位互換性があり、2 番目の形式は C99 および XPG6 (Unix03) 標準への準拠を要求します。

于 2013-07-01T03:36:25.557 に答える