2017-02-02 8 views
1

私は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 
+0

awkを使用していますか?それ以外の場合は、テキストを 'std :: vector 'に読み込み、' vector'の一部に 'std :: reverse'を使い、もう一度出力してください。 –

+0

これは、バッファにメッセージを書き込む前に文字列を逆順にすることですが、AWKでこれを行うことができるかどうかは疑問でした。 –

答えて

1
$ echo "This is a message to buffer" | awk '{t=$1;$1=$3;$3=t}1' 

a is This message to buffer 

奇数要素を逆にすると、中心が維持されます。だからここでは第二の分野を変える必要はない。

+0

Yessss。私はそれを完全に理解しています。私はこれが私のために働くと思う。 –

関連する問題