Как получить arg из командной строки в C - PullRequest
0 голосов
/ 16 июня 2010

Я хочу написать программу для получения аргумента из командной строки.Это похоже на atof ().

Вот моя программа:

  9     char s[] = "3.1415e-4";
 10     if (argc == 1) {
 11         printf("%e\n",atof(s));
 12     }
 13     else if (argc == 2) {
 14         //strcpy(s, argv[1]);
 15         printf("%e\n",atof(argv[1]));
 16     }

1. Должен ли я просто использовать argv [1] для передачи строки в atof (),или, поместите его в s []?

2. Если бы я лучше поместил его в s [], есть ли какая-нибудь встроенная функция, чтобы выполнить эту работу?может быть, какая-то функция вроде strcpy () ??

спасибо.

Ответы [ 3 ]

0 голосов
/ 16 июня 2010

Вы можете просто передать его как argv[1], копировать его не нужно.Если вы хотите скопировать его, вам нужно убедиться, что s действительно может содержать полную строку, содержащуюся в argv[1], и выделить больший массив, если нет ... так что это сложнее.

0 голосов
/ 16 июня 2010

Лично я бы сделал это так:

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
  const char defaultStr[]="3.1415e-4";
  const char *arg = NULL;
  if(argc <= 1)
  {
     arg = defaultStr;
  }
  else
  {
     arg = argv[1];
  }

  printf("%e\n", atof(arg));

  return 0;
}
0 голосов
/ 16 июня 2010

Нет необходимости помещать его в s.Просто используйте argv[1].

Сказав это, вы все равно помещаете его в s (что не так уж и плохо), убедитесь, что вы изменили свой код на:

char s[20];
strcpy(s, argv[1]);

Использование strcpy с массивом константных символов не очень хорошая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...