私はfolowingメッセージを望んでいます: "This is a message to buffer"は "a is This to message to buffer"と表示されます。バッファにメッセージを送信し、最初の3単語を逆にしてメッセージを印刷するにはどうすればよいですか?
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
FILE *fpo; //for writing to a pipe
char buffer[BUFSIZ+1]; //BUFSIZ defined in <stdio.h>
//Write buffer a message
sprintf(buffer, "This is a message to buffer\n");
fpo = popen ("od -c", "w"); //pipe to command "od -c"
//od -- output dump, see "man od"
if (fpo != NULL)
{
//send data from buffer to pipe
fwrite(buffer, sizeof(char), strlen(buffer), fpo);
pclose (fpo); //close the pipe
return 0;
}
return 1;
}
次は、このプログラムの出力です:
[email protected]:~/460/lab4$ g++ -o pipe2 pipe2.cpp
[email protected]:~/460/lab4$ ./pipe2
0000000 T h i s i s a m e s s a g
0000020 e t o b u f f e r \n
0000034
ここ
がコードです...私はawk
を使用する必要があります知っているが、私はこれを行うことができる方法のイムは非常にわかりません
は基本的に私がしたい何かのように:
[email protected]:~/460/lab4$ g++ -o pipe2 pipe2.cpp
[email protected]:~/460/lab4$ ./pipe2
0000000 a i s T h i s m e s s a g
0000020 e t o b u f f e r \n
0000034
awkを使用していますか?それ以外の場合は、テキストを 'std :: vector 'に読み込み、' vector'の一部に 'std :: reverse'を使い、もう一度出力してください。 –
これは、バッファにメッセージを書き込む前に文字列を逆順にすることですが、AWKでこれを行うことができるかどうかは疑問でした。 –