C/C++

Программирование на C++. Библиотека stdio.h

Дана последовательность символов, среди которых есть "двоеточие". Получить все символы, расположенные между первым и вторым двоеточием. Если второго двоеточия нет, то получить все символы, расположенные после единственного имеющегося двоеточия. Требование к выполнению: не пользоваться функциями обработки строк (кто знает) и избегать массивов.
#include <stdlib.h>
#include <stdio.h>
void output(const char* msg, const char* str, char ch) {
int i = 0;
printf("%8s%s >>> ", msg, str);
while (str[i] && str[i] != ch) ++i;
if (!str[i]) printf("not found!");
else if (!str[++i]) printf("not found!");
else while (str[i] && str[i] != ch) putchar(str[i++]);
puts("\n");
}
int main(void) {
const char* first = "abc:defghijk:lmnop";
const char* second = "abcde:fghijklmnopq";
const char* third = "abcdefghijklmnopq:";
const char* fourth = "abcdefghijklmnopqr";
output("first: ", first, ':');
output("second: ", second, ':');
output("third: ", third, ':');
output("fourth: ", fourth, ':');
system("pause > nul");
return 0;
}

P.S. Думаю, что так прокатит!
ОБ
Олег Безуменко
63 865
Лучший ответ
Виктор Блаженов Я уверен, что Ваш ответ правильный и ни сколько в нём не сомневаюсь, но к сожалению мы по теме обработки символьных данных, прошли только операторы char, getchar, putchar, если вам не сложно, могли бы Вы сделать более лёгкий вариант, как на примере (на фото). Условие задачи с примера на фото: поменять все точки на многоточие.
Последовательность символов — это строка, которая содержит символы. В ней может быть два двоеточия, а может не быть. Так же в ней могут быть и другие разделители. Если нет второго двоеточий, то в строке должны быть все символы между первым двоеточиями и единственным двоеточием, которое там есть.
Миша Ожема
Миша Ожема
4 008
Виктор Блаженов Могли бы вы написать как Вы представляете код на C/C++ обращая внимание на требования к выполнению...
int GetNewString(char* messin,int len1,char* messout,int len2)
{
char* adr = messin;
int yes = 0;
int index = 0;
for(int i=0;i<len1;i++)
{
if (*adr == ':')
{
if (yes) return index;
else
{
yes = 1;
adr++;
continue;
}
}
if(yes == 1)
{
if(index < len2)
{
messout[index] = *adr;
index ++;
}
}
adr++;
}
return index;
}