switch
とを使用してコマンドラインの引数を解析しようとしていますgetopt()
。構造は非常に簡単です。私には、、、makefile
および.c
ファイルがあり.h
ます。スイッチを使うのは初めてなので、基本的なミスをしているのかもしれません。このリンクをガイドとして使用して、リンクテキスト
と
リンクテキストを切り替え
ました。基本的な間違いを見つけた場合は、お知らせください。
makefile:
make:lunar
lunar: lunar.o
gcc -Wall -std=c99 -g -o lunar lunar.o -lm
lunar.o: lunar.c lunar.h
gcc -Wall -std=c99 -g -c lunar.c
clean:
-rm -f *.o lunar core
/////////////////////////////////////
lunar.c
int main (int argc, char *argv[]){
int i;
int c = 0;
int gravity = 0;
int thrust = 0;
opterr = 0;
while ((c = getopt (argc, argv, "gtf:")) != -1)
switch (c){
case 'g':
gravity = argv[optind];
break;
case 't':
thrust = argv[optind];
break;
case 'f':
argument = argv[optind];
break;
case '?':
if (optopt == 'c')
fprintf(stderr, "Option -%c requires
an argument.\n", optopt);
else if (isprint (optopt))
fprintf (stderr, "Unknown option
`-%c'.\n", optopt);
else
fprintf (stderr, "Unknown option
character `\\x%x'.\n",
optopt);
return 1;
defult:
abort ();
}
printf ("gravity is %d and thrust is %d.\n",
gravity, thrust);
for (int index = optind ; index < argc ; index++ ){
printf ("Non-option argument %s\n", argv[index]);
return 0;
}
}
///////////////////////////////////
lunar.h
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
#include <unistd.h>
#include <assert.h>
#define MAX_WORD 256