Проверить, содержит ли строка подстроки .exe, .bat, .com - C (СИ)
Формулировка задачи:
Задание: Проверить, содержит ли строка подстроки .exe, .bat, .com. Если да, то заменить их тест на ****, а в начале строки добавить текст (Changed).
Проблема в том, что любой введённый текст заменяется на ****, помогите пожалуйста
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <locale.h>
- #define MAX_SYMB 256
- #define MAX_STR 100
- /**
- * Выделение из строки подстрок, разделённых запятыми
- *
- * @str_1 исходная введённая строка
- * @str_2 обработанная строка
- * @count счётчик длины введённой строки
- */
- void strprc(char str_1[][MAX_SYMB], char str_2[][MAX_SYMB], int count);
- int main()
- {
- setlocale (0, "rus");
- printf ("Введите строку:\n");
- char str_1[MAX_STR][MAX_SYMB] = { "" };
- char str_2[MAX_STR][MAX_SYMB] = { "" };
- int count_str;
- for (count_str = 0; strcmp(str_1[count_str - 1], "end"); count_str++)
- gets(str_1[count_str]);
- if (count_str == 1)/* Проверка ввода строки на ОДЗ*/{
- printf ("Вы не ввели ни одной строки\n");
- return 0;
- }
- strprc(str_1, str_2, count_str);
- for(int i = 0; i < count_str - 1; i++)
- if(strlen(str_1[i]) > 20)/* Проверка длины строки на ОДЗ*/
- {
- printf("Слишком большая строка. Не сместится в Таблицу\n");
- return 0;
- }
- printf ("Результат:\n");
- printf ("+---------------------+-------------------------+\n\
- | Исходная строка | Обработанная строка |\n\
- +---------------------+-------------------------+\n"); /* Вывод в виде таблицы*/
- for(int i = 0; i < count_str - 1; i++)
- {
- printf("| %s", str_1[i]);
- for (int j = 0; j < 20- strlen(str_1[i]);j++)
- printf (" ");
- printf("| %s", str_2[i]);
- for (int j = 0; j < 24- strlen(str_2[i]);j++)
- printf (" ");
- printf ("|");
- printf ("\n+---------------------+-------------------------+\n");
- }
- return 0;
- }
- /**
- * Выделение из строки нужных подстрок
- */
- void strprc(char str_1[][MAX_SYMB], char str_2[][MAX_SYMB], int count)
- {
- for (int k = 0; k < count - 1; k++)
- {
- strcat(str_2[k], "Changed: ");
- for (int i = 0, j = 7; str_1[k][i] != '\0'; i++, j++)
- {
- if(str_1[k][i] == '.exe', '.com','.bat')
- str_2[k][j] = '****';
- else
- str_2[k][j] = str_1[k][i];
- }
- }
- }
Решение задачи: «Проверить, содержит ли строка подстроки .exe, .bat, .com»
textual
Листинг программы
- if(str_1[k][i] == '.exe', '.com','.bat') /* (2) (1) */
- str_2[k][j] = '****'; /* (3) (1) */
- else
- str_2[k][j] = str_1[k][i]; /* (3) */
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д