Множественное преобразование строки - C (СИ)

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

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

Дана строка. Преобразовать ее следующим образом: если символ «*» в ней отсутствует, то оставить ее без изменения, иначе – заменить на символ «–» число символов после первого вхождения «*», равное ближайшему меньшему целому числу к половине длины подстроки, расположенной правее первого вхождения «*». Прототип и ее краткое описание: atof double atof(char *str) ; Преобразует строку str в вещественное число типа double atoi int atoi(char *str) ; Преобразует строку str в десятичное целое число atol long atol(char *str) ; Преобразует строку str в длинное десятичное целое число itoa char *itoa(int v, char *str, int baz) ; Преобразует целое v в строку str. При изображении числа используется основание baz (от 2 до 36). Для отрицательного числа и baz = 10 первый символ — минус(-) ltoa char *ltoa(long v, char *str, int baz); Преобразует длинное целое v в строку str . При изображении числа используется основание baz (от 2 до 36) strcat char * strcat(char *sp, char *si); Приписывает строку si к строке sp (конкатенация строк) strchr char *strchr(char *str, int c) ; Ищет в строке str первое вхождение символа с strcmp int strcmp(char *str1 , char *str2) ; Сравнивает строки str1 и str2 . Результат отрицателен, если strl меньше str2; равен нулю, если str1 равно str2 и положителен, если str1 больше str2 (сравнение беззнаковое) strcpy char *strcpy(char *sp, char *si) ; Копирует байты строки si в строку sp strcspn int strcspn(char *str1, char *str2) ; Определяет длину первого сегмента строки str1, содержащего символы, не входящие во множество символов строки str2 strdup char *strdup(const char *str); Выделяет память и переносит в нее копию строки str strlen unsigned strlen(char *str); Вычисляет длину строки str strlwr char *strlwr(char *str); Преобразует буквы верхнего регистра в строке в соответствующие буквы нижнего регистра strncat char *strncat(char *sp, char *si, int kol); Приписывает kol символов строки si к строке sp strncmp int strncmp(char *str1, char *str2, int kol); Сравнивает части строк str1 и str2, причем рассматриваются первые kol символов. Результат отрицателен, если str1 меньше str2; равен нулю, если str1 равен str2, и положителен, если str1 больше str2 strncpy char *strncpy(char *sp, char *si, int kol); Колирует kol символов строки si в строку sp («хвост» отбрасывается или дополняется пробелами) strnicmp char *strnicmp(char *str1, char *str2, int kol); Сравнивает не более kol символов строки str1 и строки str2, не делая различия регистров strnset char *strnset(char *str, int с, int kol); Заменяет первые kol символов строки str символом с strpbrk char *strpbrk(char *str1, char *str2); Ищет в строке str1 первое появление любого из множества символов, входящих в строку str2 strrchr char *strrchr(char *str, int с); Ищет в строке str последнее вхождение символа с strset int strset(char *str, int с); Заполняет строку str символом с strspn int strspn(char *str1, char *str2); Определяет длину первого сегмента строки str1, содержащего только символы, из множества символов строки str2 strstr char *strstr(const char *str1, const char *str2); Ищет в строке str1 подстроки str2. Возвращает указатель на тот элемент в строке str1, с которого начинается подстрока str2 strtod double *strtod(const char *str,char **endptr); Преобразует символьную строку str в число двойной точности. Если endpt нe равен null , то *endptr возвращает как указатель на символ, при достижении которого прекращено чтение строки str strtok char *strtok(char *str1, const char *str2); Ищет в строке str1 лексемы, выделенные символами из второй строки strtol long *strtol(const char *str ,char **endptr,intbaz); Преобразует символьную строку str к значению «длинное число» с основанием baz(от 2 до 36). Если endptr не равен null, то *endptr возвращается как указатель на символ, при достижении которого прекращено чтение строки str strupr char *strupr(char *str) Преобразует буквы нижнего регистра в строке в соответствующие буквы верхнего регистра ultoa char *ultoa(unsigned long v, char *str, int baz); Преобразует беззнаковое длинное целое v в строку str

Решение задачи: «Множественное преобразование строки»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
int main(void)
{
  int N = 0;
  int i = 0;
  
  char s[256] = "This is a * test string from * hell *! Or not. Or maybe it is. Whatever.";
 
  char* pch = NULL;
 
  pch = strstr(s, "*");
  
  if (pch != NULL)
  {
    N = strlen(pch + 1) / 2;
 
    for (i = 0; i < N; i++)
    {
      *(pch + 1 + i) = '-';
    }
  }
 
  printf("'%s'\n", s);
  
  return 0;
}

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


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

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

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