Dưới đây là một chương trình xoá khoảng cách thừa khi nhập một chuỗi. Nhưng bài e làm nó chỉ đúng khi nhập thừa 1 dấu cách còn nhập nhiều hơn nó chỉ giảm đi 1 dấu thôi. E đang bí, ac nào có hướng giải quyết xin chỉ dẫn. Em cảm ơn ạ
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char* lTrim (char s[])
{
int i=0;
while (s[i]==' ')i++;
if (i>0) strcpy(&s[0], &s[i]);
return s;
}
char* rTrim (char s[])
{
int i=strlen(s)-1;
while (s[i]==' ') i--;
s[i+1]='\0';
return s;
}
char* trim (char s[])
{ rTrim(lTrim(s));
char *ptr = strstr(s, " ");
while (ptr!=NULL)
{
strcpy (ptr,ptr+1);
ptr=strstr(s," ");
}
return s;
}
int main(int argc, char *argv[])
{
char s[100];
int i,n,j,dem,lap=0;
gets(s);
dem=0;
n=strlen(s);
do
{
for(i=0;i<n;i++)
{
if((s[i]==' ')&&(s[i+1]==' '))
{
dem++;
for(j=i;j<n;j++)
{
s[j]=s[j+1];
}
}
}
}
while(dem==0);
printf("Chuoi sau khi cat:\n");
for(i=0;i<(n-dem);i++)
{
printf("%c",s[i]);
}
return 0;
}