2016-05-01 17 views
-4

私はexecvpを使ってcでファイルを作成します。そのファイルの名前はint1変数にあります。それは動作しません。Cでexecvpとtouchを実行

int int1; 
sscanf((char*) file_memory,"%d",&int1); 
char* arg_list[] = { 
     "touch", 
     "int1", 
     NULL 
     }; 
execvp ("touch",arg_list); 
+1

"これは機能しません"とは決して適切な問題の説明ではありません。プログラムの入力、予想される動作、実際の動作を正確に記述してください。 'execvp'が成功するかどうかをチェックすることから始めることができ、そうでなければ' errno'を出力することができます。 – kaylum

答えて

1

文字列リテラルを書いたので、文字通りint1という名前のファイルを作成しています。変数は文字列リテラル内では展開されません。文字列変数に整数値を入力する必要があります。

int int1; 
sscanf((char*) file_memory,"%d",&int1); 
char name[20]; 
snprintf(name, sizeof name, "%d", int1); 
char *arg_list[] = { 
    "touch", 
    name, 
    NULL, 
}; 
execvp("touch", arg_list); 
関連する問題