Форматирование текста по ширине - C (СИ)
Формулировка задачи:
Здравствуйте. Мне нужно отформатировать текст(одну строку) по ширине(вводится с клавиатуры) - т.е. как в Word. strtowords - разбивает строку на слова, а в другой нужно провести непосредственно табулирование. Помогите найти ошибку, пожалуйста.
char **strtowords(char *s,int *c)
{
int count=0;
char **words = new char*[strlen(s)/2+2];
char *p=s;
for(char *ps; ps=strchr(p,' ');p=ps+1)
if(ps!=p)
{
words[count]=new char[ps-p+1];
strncpy(words[count],p,ps-p);
words[count][ps-p]=0;
count++;
}
if(strlen(p))
{
words[count]=new char[strlen(p)+1];
strcpy(words[count],p);
count++;
}
words[count]=0;
*c=count;
return words;
}
void tabulate(char **word, int w, int n)
{
int q=w;
char *text=new char[w];
for(int i=0;word[i];i++)
{
if(strlen(word[i])<q)
{
strcat(text,word[i]);
strcat(text," ");
q=q-strlen(word[i])-1;
}
else
{
for(char *ps=text;ps=strstr(ps," ");ps+=2)
strins(ps," ");
q=w;
i--;
printf("%s\n",text);
strdel(text,w);
}
}
}Решение задачи: «Форматирование текста по ширине»
textual
Листинг программы
'\t'