Есть ли в языке Си аналоги функций Pos() и Delete()? - C (СИ)
Формулировка задачи:
Добрый день.
Пользователем вводится строка
Необходимо разделить ее на две части( до запятой и после запятой). Как это сделать? Есть ли в языке Си аналоги функций паскаля Delete() и Pos()?
Если можно, приведите, пожалуйста, примеры использования таких функций.
char d[100];
printf("Введите число:\n");
gets(d);Решение задачи: «Есть ли в языке Си аналоги функций Pos() и Delete()?»
textual
Листинг программы
#include <stdio.h>
static const char* pszText = "Something in a thirty-acre thermal thicket of thorns and thistles thumped and thundered threatening the three-D thoughts of Matthew the thug - although, theatrically, it was only the thirteen-thousand thistles and thorns through the underneath of his thigh that the thirty year old thug thought of that morning.";
int main(int argc,char* argv[])
{
char pBuf[1000];
strcpy(pBuf,pszText);
char* pStr1 = pBuf;
char* pStr2 = strchr(pBuf,',');
printf("This is FULL text: %s\n\n",pBuf);
if (!pStr2)
{
// Error !
// Delimiter Not found
return 0;
}
*pStr2 = 0;
++pStr2;
printf("This is text BEFORE comma: %s\n\n",pStr1);
printf("This is text AFTER comma: %s\n\n",pStr2);
return 0;
}
Объяснение кода листинга программы
- В данном коде на Си реализуется функция, которая разбивает строку на две части по заданному разделителю (в данном случае запятой).
- Сначала мы объявляем строку
pszText, которая содержит исходный текст. Затем мы объявляем буферpBufдля хранения копии исходного текста. - Затем мы копируем исходный текст в буфер с помощью функции
strcpy(). Далее мы инициализируем указательpStr1на начало буфера иpStr2на первый символ запятой в буфере с помощью функцииstrchr(). - Если
pStr2равенNULL, это означает, что запятая не найдена в строке. В этом случае выводится сообщение об ошибке и программа завершается. - *Если
pStr2не равенNULL, мы устанавливаем `pStr2равнымNULL, чтобы отделить первую часть строки до запятой. Затем мы увеличиваем значениеpStr2` на 1, чтобы он указывал на следующую часть строки после запятой.** - Мы выводим первую часть строки до запятой с помощью
printf()и вторую часть строки после запятой также с помощьюprintf(). - Наконец, функция
main()возвращает0, указывая на успешное выполнение программы.