Проверить, содержит ли строка подстроки .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) */
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д