fprintf()
1つのファイルに3つの文字列をすべて同じ行に配置したいと思います。
最初の2つはスペースを含めることはできませんが、3つ目はスペースを含めることができます。IEword word rest of line
fscanf()
誰かがそれを3つの変数に変換する方法を教えてもらえますか?
簡単にできる場合は、区切り文字をいくつか入れてもかまいません。例えば[word] [word] [rest of line]
区切り文字なしでも実行できます。
char s1[32], s2[32], s3[256];
if(sscanf(line, "%31s %31s %255[^\n]", S1, S2, S3) == 3)
/* ... */
line
入力が実際に改行で終わっている限り、これは機能するはずです。
もちろん、文字列のサイズを調整する必要があります。また、プリプロセッサを使ってサイズを繰り返さないようにすることもできますが、そうすると複雑になるため、この例ではそれを避けました。
を使用scanf
して2つの単語をスキャンし、を使用fgets
して残りの行を取得できます。
FILE *f = stdin; // or use fopen to open a saved file
// use buffers large enough for your needs
char word1[20];
char word2[20];
char restOfLine[100];
// make sure fscanf returns 2 (indicating 2 items scanned successfully)
fscanf(f, "%20s %20s", word1, word2);
// make sure fgets returns &restOfLine[0]
fgets(restOfLine, sizeof restOfLine, f);
fgets
キャラクターに遭遇した場合'\n'
、それもバッファーに入れられることに注意してください。したがって、キャラクターが不要な場合は、手動で削除する必要があります。fscanf
2以外を返す場合、またはをfgets
返すNULL
場合は、入力の読み取りに問題がありました。