вот часть кода который у меня шас есть
#include <stdio.h>
#include <string.h>
int words (char *from,char *to)
{
//char *from=buf ,*to=buf;
int l,k ;
k=0;l=0;
strcat(from," ");
*to='\0';
while(*(from+=strspn(from," \t")))
{
strncat(to,from,strcspn(from," \t"));
from=strpbrk(from," \t");
*to=' ';
k++;
}return k;}
//k++;
//l=strspn(from," \t");
//if (!l)
// *to++=l;
// *from=*to;
// while (l-->0)
// *to++=*from++;
// *to++=' ';
//}
//*to='\0';
//return k;
//}
/* int spase(char buf[])
{ char *from=buf;
for (;*from=" "|| *from=='/t';*from++);
return from;
}*/
int swop(char buf[],int l)
{
int i,k,n;
char *p ;
int tmp[80];
for (i=0;*buf+=strspn(buf," \t") && i<l;i++,buf+=strcspn(buf," \t"));
if (!*buf) return 0;
n=strspn(buf," \t");
p=buf+n+strspn(buf+n," \t");
if (!*p) return 0;
k=strcspn(buf," \t");
i=strncmp(buf,p,k);
if(i>0 || !i && n>k)
{
strncpy(tmp,buf,n+1);
for(i=0;i<=k;i++) buf=p;
strncpy(p+k-n,tmp,n+1);
return 1;}
return 0;
}
int main()
{
char buf[80],buf2[80];
int i,n,j;
i=0;j=0;n=0;
while (printf("enter string "), gets(buf))
{
//spase(buf);
n=words(buf,buf2);
for (i=1;i<n;i++)
for(j=0;j<n-1;j++)
swop(buf2,j);
printf("%s\n",buf2);
}return 0;
}
как задумывалось в первой функции должны удалятся лишнии пробелы и символы табуляци и фозвращать значение равное количеству строк
на данный момент она пока только удаляет пробелыи табуляцию.
вторая функция уже должна раставлять слава ф алфавитном порядке не знаю работает ли она правильно
можете если не трудно исправить эту или написсать свою