#include <stdio.h>
#include <fcntl.h>
#include <sys/uio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int fd;
fd=open(argv[1],O_RDWR|O_APPEND);
printf("fd=%d\n",fd);
char *str0 = "hello ";
char *str1 = "world ";
int x=5;
//char ch = 'a';
struct iovec iov[3];
ssize_t nwritten;
iov[0].iov_base = str0;
iov[0].iov_len = strlen(str0);
iov[1].iov_base = str1;
iov[1].iov_len = strlen(str1);
iov[2].iov_base = (&x);
iov[2].iov_len = sizeof(x);
nwritten = writev(1, iov, 3);//1 for stdout
printf("\n number written=%d\n",nwritten);
}
ここでは、stdoutに整数値が出力されません。 誰かが私のためにいくつかの解決策を提案してください。writev操作例ここでは、標準出力に整数値を出力しません。
私の実際の出力は、私はあなたの問題はあなたがstdout
に見たいASCII
フォーマットに属し
hello world 5
:それをする
もう一つの方法は、snprintf機能を使用して
ASCII
に整数値を変換するのですか?メインの最後に 'fflush(stdout)'を試してください。 – Nishant私はあなたのコードをオンラインで(http://ideone.com/jKPFyq)excecutedし、正しい出力を得ました。 – Nishant
サイドノート: 'printf(" \ n number written =%zd \ n "、nwritten);' – LPs