テキスト ファイルの一部の行には、開き角かっこで始まり、可変数の文字があり、その後に閉じ角かっこが続き、さらにいくつかのテキストが続く行が含まれています。
例えば:
[ABC] why is the sky green?
[DEFG] Ou sont les Niegedens d'antan?
[I can't code C] (... obviously)
角かっこの間のテキストを取得するにはどうすればよいですか? (したいprintf
)
行ごとに読み取り、最初の文字を と比較し[
、 を使用strchr
して閉じ角括弧を見つけます]
。
任意の長い行の場合、fgets
一時バッファに読み込み、行末記号をチェックして、行の途中にある括弧内のテキストを誤ってキャプチャするのを防ぐことができます。印刷するには、そのまま印刷する (そして、次の行に移動するか に遭遇したときに停止する]
) か、文字列ビルダーの独自の実装でバッファリングすることができます。
最も簡単な方法は、おそらく scanset 変換です。
char line[256];
while (fgets(line, sizeof(line), stdin)) {
char string[256];
sscanf(line, "[%255[^]]", string);
printf("%s\n", string);
}