LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

По второму фрагменту (первый не смотрел):

  /*Функция печати результата*/
  int ret(int r) {
    printf("%d", r);
    return r;
  }

Если выводишь ошибку, то она должна быть человеко-читаемой. Нет смысла выводить результат, который ты и так возвращаешь.

  /*Проверим ввод аргументов*/
  if (argc != 3) {
    printf("Restart it with two arguments!\n");
    return ret(0);
  }

Если неправильные поданные аргументы являются ошибкой, то почему возвращается нуль? Какой в этом смысл?

mikhail@fall /tmp $ ./a.out 
Restart it with two arguments!
0%                                                                                                                                                     

С какими аргументами я должен перезапустить? Если в ошибке выводится совет что делать, то его нужно делать понятным. Иначе в нем смысла нет абсолютно никакого — зачем он сдался, если все равно в сырцы смотреть?

	/*Проверим знаки*/
	if (argv[1][0] == '-' && argv[2][0] != '-')
                return ret(2);

	if (argv[2][0] == '-' && argv[1][0] != '-')
                return ret(1);

Что значит ret(2)? А ret(1)?

/*Функция конвертации аргумента в целое*/
int cycles(char *ar1, int i)
{
	int a = 0;

	for (i = i; ar1[i]; i++)
		a = a * 10 + (ar1[i] - '0');

	return a;
}

i = i? Это зачем вообще?

Почему функция называется cycles, если она конвертирует аргумент в целое?

Исходная версия Deleted, :

По второму фрагменту (первый не смотрел):

  /*Функция печати результата*/
  int ret(int r) {
    printf("%d", r);
    return r;
  }

Если выводишь ошибку, то она должна быть человеко-читаемой. Нет смысла выводить результат, который ты и так возвращаешь.

  /*Проверим ввод аргументов*/
  if (argc != 3) {
    printf("Restart it with two arguments!\n");
    return ret(0);
  }

Если неправильные поданные аргументы являются ошибкой, то почему возвращается нуль? Какой в этом смысл?

mikhail@fall /tmp $ ./a.out 
Restart it with two arguments!
0%                                                                                                                                                     

С какими аргументами я должен перезапустить? Если в ошибке выводится совет что делать, то его нужно делать понятным. Иначе в нем смысла нет абсолютно никакого — зачем он сдался, если все равно в сырцы смотреть?

	/*Проверим знаки*/
	if (argv[1][0] == '-' && argv[2][0] != '-')
                return ret(2);

	if (argv[2][0] == '-' && argv[1][0] != '-')
                return ret(1);

Что значит ret(2)? А не ret(1)?

/*Функция конвертации аргумента в целое*/
int cycles(char *ar1, int i)
{
	int a = 0;

	for (i = i; ar1[i]; i++)
		a = a * 10 + (ar1[i] - '0');

	return a;
}

i = i? Это зачем вообще?

Почему функция называется cycles, если она конвертирует аргумент в целое?