Программа не запускается без аргументов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Программа не хочет работать без аргументов. При запуске сразу завершается и Windows выводит сообщение, что проект перестал работать. Пожалуйста, укажите на ошибку. Спасибо.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. int my_strcmp(char *first, char *second)
  5. {
  6. for( ; *first == *second; ++first, ++second )
  7. if( *first == 0 ) return 0;
  8. return *first < *second ? -1 : 1;
  9. }
  10. int main(int argc, char* argv[])
  11. {
  12. int x = 1;
  13. int len;
  14. char myChar;
  15. char in[255];
  16. char out[255];
  17. char ch = '\0';
  18.  
  19. if (my_strcmp(argv[x], "-x") == 0) //char to hex
  20. {
  21. fgets(in, sizeof(in), stdin);
  22. len = strlen(in);
  23. if(in[len-1]=='\n') in[--len] = '\0';
  24. for(int i = 0; i<len; i++)
  25. {
  26. sprintf(out+i*2, "%x", in[i]);
  27. }
  28. printf("%s\n", out);
  29. }
  30. else if(my_strcmp(argv[x], "-r") == 0) // hex to char
  31. {
  32. int i = 0;
  33. char buff[3] = {0};
  34. while ((myChar = getchar()) != EOF)
  35. {
  36. buff[i++] = myChar;
  37. if(i == 2)
  38. {
  39. i = 0;
  40. myChar = strtol(buff, NULL, 16);
  41. putchar(myChar);
  42. }
  43. }
  44. }
  45. else if(my_strcmp(argv[x], "-S") == 0) //bin to char
  46. {
  47. fgets(in, sizeof(in), stdin);
  48. myChar = strtol(in, 0, 2);
  49. printf("%c\n", myChar );
  50. }
  51. else// no one arguments
  52. {
  53. fgets(in, sizeof(in), stdin);
  54. len = strlen(in);
  55. for(int y = 0; isprint(in[y]); y++)//char to hex
  56. {
  57. if(in[len-1]=='\n') in[--len] = '\0';
  58. for(int i = 0; i<len; i++)
  59. {
  60. sprintf(out+i*2, "%x", in[i]);
  61. }
  62. printf("%c %s", ch, out);
  63. }
  64. }
  65. }

Решение задачи: «Программа не запускается без аргументов»

textual
Листинг программы
  1. if (argc > 1) {
  2.     // были введены аргументы тут ваш код для работы с ними
  3. } else {
  4.     // без аргументов
  5. }

Объяснение кода листинга программы

  1. if (argc > 1) - проверка наличия аргументов командной строки (argc - количество аргументов, 1 - количество обязательных аргументов для запуска программы)
  2. // были введены аргументы - комментарий
  3. // ваш код для работы с ними - здесь должен быть код, который будет выполняться при наличии аргументов
  4. else - альтернативный блок кода для случая, если аргументы не были введены
  5. // без аргументов - комментарий

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы