Программа не запускается без аргументов - 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 {
- // без аргументов
- }
Объяснение кода листинга программы
- if (argc > 1) - проверка наличия аргументов командной строки (argc - количество аргументов, 1 - количество обязательных аргументов для запуска программы)
- // были введены аргументы - комментарий
- // ваш код для работы с ними - здесь должен быть код, который будет выполняться при наличии аргументов
- else - альтернативный блок кода для случая, если аргументы не были введены
- // без аргументов - комментарий
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д