/* Write a Program to remove the trailing blanks and tabs from each input line
and to delete entirely blank lines */
#include<stdio.h>
#define MAXLINE 1000
int mgetline(char line[],int lim);
int removetrail(char rline[]);
int main(void)
{
int len;
char line[MAXLINE];
while((len=mgetline(line,MAXLINE))>0)
if(removetrail(line) > 0)
return 0;
}
int mgetline(char s[],int lim)
{
int i,c;
for(i
=0;i
<lim
-1 && (c
=getchar())!=EOF
&& c
!='\n';++i
) s[i] = c;
if( c == '\n')
{
s[i]=c;
++i;
}
s[i]='\0';
return i;
}
/* To remove Trailing Blanks,tabs. Go to End and proceed backwards removing */
int removetrail(char s[])
{
int i;
for(i=0; s[i]!='\n'; ++i)
;
--i; /* To consider raw line without \n */
for(i >0; ((s[i] == ' ') || (s[i] =='\t'));--i)
; /* Removing the Trailing Blanks and Tab Spaces */
if( i >= 0) /* Non Empty Line */
{
++i;
s[i] = '\n';
++i;
s[i] = '\0';
}
return i;
}
LyogV3JpdGUgYSBQcm9ncmFtIHRvIHJlbW92ZSB0aGUgdHJhaWxpbmcgYmxhbmtzIGFuZCB0YWJzIGZyb20gZWFjaCBpbnB1dCBsaW5lCiAgYW5kIHRvIGRlbGV0ZSBlbnRpcmVseSBibGFuayBsaW5lcyAqLwoKI2luY2x1ZGU8c3RkaW8uaD4KI2RlZmluZSBNQVhMSU5FIDEwMDAKCmludCBtZ2V0bGluZShjaGFyIGxpbmVbXSxpbnQgbGltKTsKaW50IHJlbW92ZXRyYWlsKGNoYXIgcmxpbmVbXSk7CgppbnQgbWFpbih2b2lkKQp7CiAgaW50IGxlbjsKICBjaGFyIGxpbmVbTUFYTElORV07CiAgCiAgd2hpbGUoKGxlbj1tZ2V0bGluZShsaW5lLE1BWExJTkUpKT4wKQogICAgaWYocmVtb3ZldHJhaWwobGluZSkgPiAwKQogICAgICBwcmludGYoIiVzIixsaW5lKTsKCiAgcmV0dXJuIDA7Cn0KCmludCBtZ2V0bGluZShjaGFyIHNbXSxpbnQgbGltKQp7CiAgaW50IGksYzsKCiAgZm9yKGk9MDtpPGxpbS0xICYmIChjPWdldGNoYXIoKSkhPUVPRiAmJiBjIT0nXG4nOysraSkKICAgIHNbaV0gPSBjOwogIGlmKCBjID09ICdcbicpCiAgewogICAgc1tpXT1jOwogICAgKytpOwogIH0KICBzW2ldPSdcMCc7CiAgCiAgcmV0dXJuIGk7Cn0KCi8qIFRvIHJlbW92ZSBUcmFpbGluZyBCbGFua3MsdGFicy4gR28gdG8gRW5kIGFuZCBwcm9jZWVkIGJhY2t3YXJkcyByZW1vdmluZyAqLwoKaW50IHJlbW92ZXRyYWlsKGNoYXIgc1tdKQp7CiAgaW50IGk7CgogIGZvcihpPTA7IHNbaV0hPSdcbic7ICsraSkKICAgIDsKICAtLWk7ICAvKiBUbyBjb25zaWRlciByYXcgbGluZSB3aXRob3V0IFxuICovCgogIGZvcihpID4wOyAoKHNbaV0gPT0gJyAnKSB8fCAoc1tpXSA9PSdcdCcpKTstLWkpICAgCiAgICA7IC8qIFJlbW92aW5nIHRoZSBUcmFpbGluZyBCbGFua3MgYW5kIFRhYiBTcGFjZXMgKi8KCiAgaWYoIGkgPj0gMCkgLyogTm9uIEVtcHR5IExpbmUgKi8KICB7CiAgICArK2k7CiAgICBzW2ldID0gJ1xuJzsKICAgICsraTsKICAgIHNbaV0gPSAnXDAnOwogIH0KICByZXR1cm4gaTsKfQ==