Проверить, содержит ли строка подстроки .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) */

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


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

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

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