揮発性のメモ2

最近知った知識を さも昔から知ってた風にメモ書きしていく

sscanf で設定ファイルを読む


とりあえずこのくらい雑で問題ない

typedef struct {
    char host[16];
    int  port;
} SampleConfig_t;

/**
 * @brief 設定ファイル読み込み
 * @param config SampleConfig_t構造体ポインタ
 * @param filename 設定ファイル名
 */
void load_config(SampleConfig_t *config, const char *filename) {
    FILE *fp = fopen(filename, "r");
    if(fp == NULL) return;

    char line[256];
    while(fgets(line, sizeof(line), fp) != NULL){
        line[strcspn(line, "#")] = '\0'; // コメント以降除去

        sscanf(line, " host = %15s ", config->host);
        sscanf(line, " port = %d ", &config->port);
    }
    fclose(fp);
}
  • sscanf のスペースは 0個以上のスペースを除去
  • strcspn便利