0
マニュアルの第2章(http://man7.org/linux/man-pages/dir_section_2.html)で説明しているLinuxシステムコールのみを使用してstdoutに書き込もうとしています。Linuxシステムコールでフォーマット指定子を使用する
ssize_t write(int fd, const void *buf, size_t count);
私が使用しようとしている機能ですが、フォーマット指定子をバッファに組み込むことを試みています。理想的には、次のように動作します。
char *adjective = argv[1];
write(1, "This is a %s example\n", adjective, 19 + strlen(adjective));
しかし、明らかにこれを行うことはできません。どのように似たようなことをやっていくのですか?
また、私はstrlen()がLinuxシステムコールのセクション2の一部ではないことを知っています。私はバッファの長さを数えることは私の質問の一部ではないので、簡単にするためにそれを含めています。
char buffer[BUFSIZE];
int size = snprintf(buffer, BUFSIZE, "This is a %s example\n", adjective);
write(STDOUT_FILENO, buffer, strlen(buffer));
あなたがsprintf()
を使用できない場合は、単に個別の文字列を書く:あなたは、書き込みバッファ、にフォーマットする
残念ながら、この割り当てでは、Linuxマニュアルのセクション2にないので、snprintf()を使用することはできません。 – adhdj
次に、書式指定子を使うことはできません。これらは 'printf()'関数群の一部です。 – Barmar
Gotcha!私はそれをすることができないと思っていた。ありがとうございました! – adhdj