簡體   English   中英

在系統命令中使用命令行中的參數

[英]Using parameters from command line in a system command

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
main(int argc,char *argv[]){
int i,j;
for (i=0;i<argc;i++){
printf("Name: %s\n",argv[i]);
    char name[100];
    sprintf(name,"echo"| rev, argv[i]);
    system(name);

}

};

我有這個問題,我的問題是我該如何反轉存儲在argv [i]中的名稱的文件,我想要執行的是執行此命令“ rev argv [i]”的子進程?

謝謝!

認為你需要改變行sprint()

sprintf(name,"rev %s", argv[i]);

好吧,您也應該在正確的參數上執行此操作,而這並不是您想要的。

您有使用sprintf的正確想法。 但它需要一個像printf一樣的格式說明符。 並且| 是按位OR運算符,在這里沒有任何意義(即使定義了指針也會產生殘缺的指針)。

snprintf(name, sizeof(name), "rev %s", argv[i]);

如果要修改名稱在arg[i] ,則不能僅將輸出重定向到同一文件,因為shell( system用於執行命令)同時打開兩個文件並打開文件寫截斷其長度。 因此,您需要將輸出重定向到另一個文件,然后在單獨的命令中將其復制回原始文件。

snprintf(name, sizeof(name), "rev %s > %s.modified", argv[i], argv[i]);
system(name);
snprintf(name, sizeof(name), "mv %s.modified %s", argv[i], argv[i]);
system(name);

請確保您使用sprintf

它必須是一個字符串,顯示一些不純的東西! 檢查相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM