[英]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.