Cコードのコンパイル中にエラーが発生しました。

Cコードのコンパイル中にエラーが発生しました。

このリンクで私がしたいことに非常によく合うCコードを見つけました。文字と数字のすべての可能な組み合わせ

#include <stdio.h>

//global variables and magic numbers are the basis of good programming
const char* charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
char buffer[50];

void permute(int level) {
  const char* charset_ptr = charset;
  if(level == -1){
    puts(buffer);
  }else {
   while(buffer[level]=*charset_ptr++) {
    permute(level - 1);
   }
  }
}

int main(int argc, char **argv)
{

  int length;
  sscanf(argv[1], "%d", &length); 

  //Must provide length (integer < sizeof(buffer)==50) as first arg;
  //It will crash and burn otherwise  

  buffer[length]='\0';
  permute(length - 1);
  return 0;
}

しかし、提案したようにコンパイルしようとすると、次のエラーが発生します。誰かがこの問題を解決するのに役立ちますか?

$ make CFLAGS=-O3 permute && time ./permute 5 >/dev/null
make: Nothing to be done for 'permute'.
./permute: line 3: //global: No such file or directory
./permute: line 4: const: command not found
./permute: line 5: char: command not found
./permute: line 7: syntax error near unexpected token `('
./permute: line 7: `void permute(int level) {'

また、gccを使用しようとすると、分割エラーエラーが発生します。

$ mv permute permute.c
$ gcc permute.c -o permute.bin
$ chmod 755 permute.bin 
$ ./permute.bin 
Segmentation fault (core dumped)

ベストアンサー1

元のCファイル名をとして指定したようですpermute。失敗したときにmakeシェルを使用してファイルを実行しようとしましたが、これはすべての構文エラーが発生しました(シェルはCコードの実行方法がわからないため)。

2番目のケースでは、コメントをクリックしました。

//最初のパラメータとして長さ(整数< sizeof(buffer)= = 50)を指定する必要があります。

//そうでなければ、衝突が発生し、燃焼します。

プログラムに最初の(またはランダムな)引数を提供しないからです。努力する./permute.bin 10

おすすめ記事