Linuxで()やスペースなどの特殊文字を使用してファイル名を継続的に作成するには? [閉鎖]

Linuxで()やスペースなどの特殊文字を使用してファイル名を継続的に作成するには? [閉鎖]

を使って多くのファイルを作成しようとしていますC。私は終わったmkdir -p directory && touch directory/filename。私のループが名前に特殊文字を含むファイルに到達するとエラーが発生します。

syntax error :" unexpected "("

助けてください?

ベストアンサー1

あなたの問題system()system()。これはまた、結果シェルが独自の構文を使用してコマンド全体を評価するため、シェルが特別に処理する文字をエスケープする必要があることを意味します。

Cでファイルとディレクトリを生成するより強力でエラーの少ない方法は、この操作に提供される実際のC関数、つまりおよびmkdir()/open()を使用することですcreat()

#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>

int
main(void)
{
  char dir[] = "some(directory)with*special[characters]";
  char file[] = "some(file)with*the[same]characters";
  int fd;

  if (mkdir(dir, 0755) == -1)
    err(EXIT_FAILURE, "creating directory failed");
  if ((fd = open(file, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1)
    err(EXIT_FAILURE, "creating file failed");
  close(fd);

  /* ... */

  return 0;
}

おすすめ記事