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

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

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

Доброго времени суток! Программа не хочет работать без аргументов. При запуске сразу завершается и Windows выводит сообщение, что проект перестал работать. Пожалуйста, укажите на ошибку. Спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
    int my_strcmp(char *first, char *second)
    {
        for( ; *first == *second; ++first, ++second )
        if( *first == 0 ) return 0;
 
        return  *first < *second ? -1 : 1;
    }
 
int main(int argc, char* argv[])
{
    int x = 1;
    int len;
    char myChar;
    char in[255];
    char out[255];
    char ch = '\0';

        if (my_strcmp(argv[x], "-x") == 0) //char to hex
        {
            fgets(in, sizeof(in), stdin);
            len = strlen(in);
 
            if(in[len-1]=='\n') in[--len] = '\0';
 
            for(int i = 0; i<len; i++)
                {
                    sprintf(out+i*2, "%x", in[i]);
                }
            printf("%s\n", out);
        }
 
        else if(my_strcmp(argv[x], "-r") == 0) // hex to char
        {
            int i = 0;
            char buff[3] = {0};
 
            while ((myChar = getchar()) != EOF)
                {
                    buff[i++] = myChar;
                    if(i == 2)
                    {
                        i = 0;
                        myChar = strtol(buff, NULL, 16);
                        putchar(myChar);
                    }
                }
        }
 
        else if(my_strcmp(argv[x], "-S") == 0) //bin to char
        {
            fgets(in, sizeof(in), stdin);
            myChar = strtol(in, 0, 2);
            printf("%c\n",  myChar );
        }
 
        else// no one arguments
        {
        fgets(in, sizeof(in), stdin);
        len = strlen(in);
 
            for(int y = 0; isprint(in[y]); y++)//char to hex
            {
 
            if(in[len-1]=='\n') in[--len] = '\0';
 
            for(int i = 0; i<len; i++)
                {
                    sprintf(out+i*2, "%x", in[i]);
                }
 
                printf("%c %s", ch, out);
            }
 
        }
 
}

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

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

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

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

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


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

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

11   голосов , оценка 4 из 5
Похожие ответы