си работа со строками
Автор Айдар Файзрахмаанов задал вопрос в разделе Другие языки и технологии
Работа со строками в Си и получил лучший ответ
Ответ от Николай Веселуха[гуру]
Создаёте буфер и флаг. Буфер для того чтобы писать в него предложение от начала до конца. Флаг для слова состоящего из 7 букв. Начинаете посимвольную запись текста в буфер, параллельно считаете буквы в словах. Как только попадается слово из нужного количества букв, устанавливаете флагу значение и ждёте конца предложения. Нашли конец, добавили в буфер символ конца строки и вывели его на экран. Итератор буфера устанавливаете в начало. Флагу присваиваете ноль. Если флаг равен нулю и достигнут конец предложения, итератор буфера возвращается в исходное состояние, его отсчёт начинается с первого значимого символа.
Как-то так.
калёк может код набросаешь?
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include<math.h>
#define MaxPr 30
#define MinPr 20
#define MaxWr 10
#define MinWr 1
#define MaxWd 7
#define MinWd 1
#define MaxSp 3
#define MinSp 1
int main()
{
int j,i,k,t,size,Ww,Pr,iZn,z,s;
srand(time(NULL));
char e[6][4]={"!!!","!!","!?","?","!","."};
int P=rand() % (MaxPr-MinPr) + MinPr;
int* S=(int*)malloc(P*sizeof(int));
for(i=0;i-P;i++) S[ i ]=rand() % (MaxWr-MinWr) + MinWr,size;
for(size=1,i=0;i-P;i++) size+=((MaxWd+3)*S[ i ]+3)*P;
char* p=(char*)malloc(size);
int b;
for(t=i=0;i-P;i++)
{
for(j=0;j-S[ i ];j++)
{
for(k=0,Ww=rand() % (MaxWr-MinWr) + MinWr;k-Ww;k++) p[t++]=char(rand() % ('z'-'a')+'a');
if(j!=S[ i ]-1) for(k=0,Pr=3-int(log10(rand() % 999+1.));k-Pr;k++) p[t++]=' ';
}
for(iZn=rand() % 126+2,iZn=log(float(iZn))/log(2.)-1,j=0;e[iZn][j];j++) p[t++]=e[iZn][j];
for(j=0,Pr=3-int(log10(rand() % 999+1.));j-Pr;j++) p[t++]=' ';
}
p[t]=0,printf("%s
",p);
for(z=t=Pr=iZn=Ww=i=0;p[ i ];i++)
{
if(p[ i ]==63||p[ i ]==46||p[ i ]==33||p[ i ]==32) { if(Pr==7) iZn=1; Pr=0; } else Pr++;
if(p[ i ]==63||p[ i ]==46||p[ i ]==33)
{
if(++z==2)
{
for(s=0,j=Ww;j < i;j++) if(p[j]==63||p[j]==46||p[j]==33||p[j]==32) { if(Pr==1) s++; Pr=0; } else Pr++;
}
if(iZn)
{
printf("%d: ",t++);
for(iZn=0,j=Ww;j < i;j++) printf("%c",p[j]);
for(;p[ i ]==63||p[ i ]==46||p[ i ]==33||p[ i ]==32;printf("%c",p[i++]));
printf("
");
}
else
for(;p[ i ]==63||p[ i ]==46||p[ i ]==33||p[ i ]==32;i++);
Ww=i--;
}
}
printf("in 2-d count: %d
",s);
free(p);
free(S);
return 0;
}
Помогите со строками в языке программирования Си!
1) строк в Си нет =/
2) зачем обнулять? записывай поверх и всё.
3) программа для задачи
подробнее...
Вопрос по функции Си strtok. Никак не могу разобраться как она работает...
Добрый вечер!
Постарался рассказать об этой функции максимально кратко и понятно (а
подробнее...
Си проблемы с setlocale(LC_ALL,"Russian");
#include <locale> // Нужно так, но можно совсем убрать этот хэдор, если есть #include
подробнее...
Оператор return в СИ
Оператор return возвращает то, что ты укажешь ему.
Оперируют в большинстве только со
подробнее...
Динамическое выделение памяти, при сравнении строк. (Си без использования встр. функций)
> char *pass;
> scanf("%s", &pass);
Это не будет работать!
В переменной pass
подробнее...
Как исправить эти ошибки в программе Си?
warning - не ошибка, а предупреждение. Программа с предупреждениями работать будет, но, возможно,
подробнее...
стихи Ахматовой. Кто знает стихи Ахматовой, посвящённые теме поэта и поэзии?))
Когда б вы знали, из какого сора
Растут стихи, не ведая стыда.
Как желтый одуванчик у
подробнее...
в каком веке издание букваря кариона истомина??
Сначала был подготовлен рукописный экземпляр, расписанный золотом и красками, который составитель
подробнее...
какие нравственные проблемы поднимает куприн в рассказе "куст сирени"?
Нравственные проблемы, которые поднимает Куприн в своём рассказе "Куст сирени", - это вопросы
подробнее...
Что такое php коды??
PHP (англ. PHP: Hypertext Preprocessor — «PHP: Препроцессор Гипертекста») — скриптовый язык
подробнее...
Кому и где установлен этот памятник? (наиболее развернутый ответ-10 баллов)
Михаил КРУГ.. Тверь.
В Твери установлен памятник Михаилу Кругу. Церемония закладки камня в
подробнее...