Программа не запускается без аргументов - 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 - альтернативный блок кода для случая, если аргументы не были введены
- // без аргументов - комментарий