2008/08/23

sprintf

これまであまり文字列をCで扱う機会が無くて、Cで文字列を合成するsprintfを知らなかった。
sprintfはprintfと同じ感覚で使える。
stdio.hをインクルードする必要がある。
ちなみに文字列はPythonで扱うと非常に楽で、結合したければ+で出来てしまうし、切り出すにはsplitが使いやすい。

#include <stdio.h>
char str[10];
char str1[5] = "Today";
char str2[2] = "is";
int month = 8;
int day = 23;
sprintf(str,"%s %s %2d/%2d\n", str1, str2, month, day);

このように書けばいいだけだ。
この関数のおかげで、strcpyとか、strcatとかの存在意義がよくわからなくなった。

Pythonでの時刻取得

PythonでもCと同様に時刻取得が出来る。
Cだと、time.hをインクルードして、gmtime()を使えばいい。
#include <time.h>
time_t t;
struct tm *ut;
time(&t);
ut = gmtime(&t);

こうするとtに、1970年1月1日からの秒が入る。
さらに構造体utに、UTの時刻の表示形式に変えて格納している。
PCのある地域のローカルタイムにするには、localtime()を使う。
これで年、月、日、時、分、秒、曜日、1/1からの日数、夏時間フラグが取り出せる。

基本的にはPythonも同じ。
timeモジュールをインポートして、gmtime()とすると、時刻を取ってこれる。

import os
from time import gmtime, strftime
year = time.gmtime()[0]
month = strftime("%b", gmtime())

gmtime()が返す時刻は9項目で、Cと同じく、年、月、時、分、秒、曜日、1/1からの日数、夏時間フラグ。
上では1つ目の出力をyearに入力している。
またstrftime()は時刻を入力し、その出力を所定の文字列で返す関数。
%bは省略形の月名(先頭大文字の3文字)を指定している。
他にもいろいろな形式を指定できる。

ちなみにbashでもdateと打つと、時刻を持ってこれる。

wget

wgetはコマンドラインから、URLを指定して、Webページを取得するコマンド。

$ wget (URL)

で持ってこれる。
ファイル名を指定したい場合は、

$ wget (URL) -O hoge.html

などとすればいい。

2008/08/13

ifの制御式

ソースを書いたり読んだりしていて、すぐに忘れてしまうので記述。

ifは制御式を評価して、それが非0なら、以降の文を実行するようになっている。
制御文が変数のみだった場合、その数値が非0なら、実行される。
0なら実行されない。