0

systemgzip -r コマンドを実行して .txt ファイルを .txt.gz に変換する C コードでコマンドを使用しようとしています。現在、変換するファイルの名前はポインターに格納され、提供されているドキュメントに従っています。このリンクで、このようにgzipのコマンド全体を文字列にコピーする必要があります

char gzip[100];
strcpy(gzip,"gzip -r /home/abc/xyz/pqr.txt");

ここで問題が発生しました.pqr.txtファイルの名前はポインタに格納されています.gzipにコピーされてからシステムコマンドに渡される文字列にそのポインタを渡すにはどうすればよいですか.

これが私が使用している完全なコードです。

#include<stdio.h>
#include<stdlib.h>

int main()
{ char *ptr1= "gzip -r/home/shailendra/sampleprograms/C/output.txt";  //working
  //char *ptr2 = "/home/shailendra/sampleprograms/C/output.txt"; // pointer used tyo store th name of file
  //char *ptr =  " gzip -r *ptr2.sstv";  //not working
int i;
char tar[50];
system(ptr1); //working
system(ptr);  //not working
return 0;
}

そのため、最初に配列を初期化してから文字列を配列にコピーしてからシステムコマンドに渡す代わりに、文字列をポインターに渡し、そのポインターをシステムコマンドに渡しました。

だから私の主な関心事は、systemコマンドによって処理されるように、文字列へのポインタに保存されているファイルの名前をどのように渡すことができるかです

4

2 に答える 2

0
#include<stdio.h>
#include<stdlib.h>

int 
main(void)
{
    const char *file = "/home/shailendra/sampleprograms/C/output.txt";

    char buf[500];

    if (snprintf(buf, sizeof buf, "gzip -r '%s'", file) >= sizeof buf) {
        /* command could not be composed, too long */
    } else {
        system(buf); 
    }

    return 0;
}
于 2013-10-10T12:30:10.053 に答える