とりあえずこのくらい雑で問題ない
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便利