Проверить, содержит ли строка подстроки .exe, .bat, .com - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание: Проверить, содержит ли строка подстроки .exe, .bat, .com. Если да, то заменить их тест на ****, а в начале строки добавить текст (Changed). Проблема в том, что любой введённый текст заменяется на ****, помогите пожалуйста
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <locale.h>
  5. #define MAX_SYMB 256
  6. #define MAX_STR 100
  7. /**
  8. * Выделение из строки подстрок, разделённых запятыми
  9. *
  10. * @str_1 исходная введённая строка
  11. * @str_2 обработанная строка
  12. * @count счётчик длины введённой строки
  13. */
  14. void strprc(char str_1[][MAX_SYMB], char str_2[][MAX_SYMB], int count);
  15. int main()
  16. {
  17. setlocale (0, "rus");
  18. printf ("Введите строку:\n");
  19. char str_1[MAX_STR][MAX_SYMB] = { "" };
  20. char str_2[MAX_STR][MAX_SYMB] = { "" };
  21. int count_str;
  22. for (count_str = 0; strcmp(str_1[count_str - 1], "end"); count_str++)
  23. gets(str_1[count_str]);
  24. if (count_str == 1)/* Проверка ввода строки на ОДЗ*/{
  25. printf ("Вы не ввели ни одной строки\n");
  26. return 0;
  27. }
  28. strprc(str_1, str_2, count_str);
  29. for(int i = 0; i < count_str - 1; i++)
  30. if(strlen(str_1[i]) > 20)/* Проверка длины строки на ОДЗ*/
  31. {
  32. printf("Слишком большая строка. Не сместится в Таблицу\n");
  33. return 0;
  34. }
  35. printf ("Результат:\n");
  36. printf ("+---------------------+-------------------------+\n\
  37. | Исходная строка | Обработанная строка |\n\
  38. +---------------------+-------------------------+\n"); /* Вывод в виде таблицы*/
  39. for(int i = 0; i < count_str - 1; i++)
  40. {
  41. printf("| %s", str_1[i]);
  42. for (int j = 0; j < 20- strlen(str_1[i]);j++)
  43. printf (" ");
  44. printf("| %s", str_2[i]);
  45. for (int j = 0; j < 24- strlen(str_2[i]);j++)
  46. printf (" ");
  47. printf ("|");
  48. printf ("\n+---------------------+-------------------------+\n");
  49. }
  50. return 0;
  51. }
  52. /**
  53. * Выделение из строки нужных подстрок
  54. */
  55. void strprc(char str_1[][MAX_SYMB], char str_2[][MAX_SYMB], int count)
  56. {
  57. for (int k = 0; k < count - 1; k++)
  58. {
  59. strcat(str_2[k], "Changed: ");
  60. for (int i = 0, j = 7; str_1[k][i] != '\0'; i++, j++)
  61. {
  62. if(str_1[k][i] == '.exe', '.com','.bat')
  63. str_2[k][j] = '****';
  64. else
  65. str_2[k][j] = str_1[k][i];
  66. }
  67. }
  68. }

Решение задачи: «Проверить, содержит ли строка подстроки .exe, .bat, .com»

textual
Листинг программы
  1. if(str_1[k][i] == '.exe', '.com','.bat') /* (2) (1) */
  2. str_2[k][j] = '****'; /* (3) (1) */
  3. else
  4. str_2[k][j] = str_1[k][i]; /* (3) */

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


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

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

8   голосов , оценка 4.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы