Удаление пробелов в конце строки
Добавлено: 13 авг 2008, 19:15
Пытаюсь программу написать(просто С учу по Кернигану-Ричи), чтобы удаляла все пробелы между последней буквой строки и символом '\n'. Но какая-то лажа получается(строки из одних пробелов не удаляются, а дублируются!):
Компилилось gcc, но, наверное, в visual studio тоже должно заработать
Код: Выделить всё
#define maxl 1000
#define EOF -1
main()
{
char n,p='0',buf[maxl],out[maxl];//next,previous bytes from input
null(buf);//buffer string
null(out);//output string
while((n=getchar())!=EOF)
{
switch(n)
{
case ' ':
put(n,buf);
case '\n':
if(p==' ')
null(buf);
else
put(n,out);
default:
if(p==' ')
{
concat(buf,out);
put(n,out);
}
else
put(n,out);
}
p=n;
}
printf("%s\n",out);
}
put(a,b)
char a;
char b[];
{
int i=0;
while(b[i]!='\0')
++i;
b[i]=a;
b[i+1]='\0';
}
null(a)
char a[];
{
a[0]='\0';
}
concat(a,b)
char a[];
char b[];
{
int i=0,j=0,k;
while(b[i]!='\0')
i++;
while(a[j]!='\0')
j++;
for(k=i;k<i+j;k++)
b[k]=a[k-i];
null(a);
}