Я пытаюсь создать простую программу для игры в кости. Программа может быть запущена двумя способами: либо с помощью scanf()
, чтобы получить количество костей, которое необходимо бросить, либо путем передачи количества костей, которое нужно бросить, в качестве аргумента.
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#if !defined(CLOCK_MONOTONIC)
#error CLOCK_MONOTONIC is not defined
#endif
int main(int argc, char *argv[]) {
if (argc > 2){
printf("\nExpected exactly one argument, received %d\n", argc);
return 1;
} else if (argc == 1){
void Randomize() {
struct timespec tmp;
clock_gettime(CLOCK_MONOTONIC,&tmp);
srand(tmp.tv_nsec);
}
int Random(int Max) {
return ( rand() % Max)+ 1;
}
int amount;
printf("Enter the amount of dice to roll: ");
scanf( "%d", &amount );
printf("\nYou entered: %d ", amount);
printf("\n");
Randomize();
int i;
int totals[6];
for (i=1;i<=6;i++)
totals[ i ]=0;
for (i=0;i<amount;i++) {
int d=Random(6) ;
int total=d;
totals[ total ]++;
}
for (i=1;i<=6;i++) {
printf("%i %i\n\r",i,totals[ i ]) ;
}
} else {
int amount = *argv[1];
printf("Getting dice: %d\n", amount);
void Randomize() {
struct timespec tmp;
clock_gettime(CLOCK_MONOTONIC,&tmp);
srand(tmp.tv_nsec);
}
int Random(int Max) {
return ( rand() % Max)+ 1;
}
Randomize();
int i;
int totals[6];
for (i=1;i<=6;i++)
totals[ i ]=0;
for (i=0;i<amount;i++) {
int d=Random(6) ;
int total=d;
totals[ total ]++;
}
for (i=1;i<=6;i++) {
printf("%i %i\n\r",i,totals[ i ]) ;
}
}
return 0;
}
Первый и Вторая часть кода работает как задумано. То есть, если анализируется более одного аргумента (в дополнение к самому имени программы), программа завершит работу с намеченным сообщением. Если не анализировать аргумент (в дополнение к самому имени программы), программа также работает как задумано.
Проблема связана с третьей частью кода, где я должен иметь возможность использовать ./a.out 123
для получения 123 случайная игра в кости Когда я пробую этот метод, я получаю:
Getting dice: 49
1 8
2 10
3 6
4 7
5 7
6 11
в качестве вывода, независимо от того, какой аргумент я передаю.
Почему 49 всегда указывается сумма, независимо от переданного аргумента, и Как я могу изменить программу, чтобы получить правильное целое число в качестве аргумента?
Редактировать: Форматирование x2