#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WORDSIZE 64
struct Word
{
char* text;
struct Word* next;
};
struct Word* to_create_the_element_of_the_node(char* buff);
struct Word* to_change_the_node(struct Word* First);
void to_print_the_node(struct Word* First);
void to_free_the_memory(struct Word* First);
int main(int argc, char* argv[])
{
int symbol;
int i;
char buff[WORDSIZE];
FILE* open;
struct Word* Current;
Current=NULL;
struct Word* Previous;
Previous=NULL;
struct Word* First;
First=NULL;
if(argc<2)
{
fprintf(stderr
, "Text file is not stated as the second argument \n"); }
if(argc>2)
{
fprintf(stderr
, "Too much of arguments \n"); }
if((open
=fopen(argv
[1], "r"))==NULL
) {
fprintf(stderr
, "Can not open file for reading \n"); }
for(i
=0; symbol
=(getc(open
))!=EOF
;) {
if(symbol!='\n' && symbol!=' ' && symbol!='\t')
{
buff[i]=symbol;
i++;
}
if(symbol=='\n' || symbol==' ' || symbol=='\t')
{
buff[i]=='\0';
i=0;
if(First==NULL)
{
First=to_create_the_element_of_the_node(buff);
Current=First;
}
else
{
Previous=Current;
Current=to_create_the_element_of_the_node(buff);
Previous->next=Current;
}
}
}
to_change_the_node(First);
to_print_the_node(First);
for(Current=First; Current!=NULL; Current=Current->next)
{
}
to_free_the_memory(First);
}
struct Word* to_create_the_element_of_the_node(char* buff)
{
struct Word* Element;
Element
=(struct Word
*)malloc(sizeof(struct Word
)); Element->next=NULL;
return Element;
}
struct Word* to_change_the_node(struct Word* First)
{
struct Word* Current;
struct Word* Buffer;
for(Current
=First
; Current
!=NULL
|| strlen(Current
->text
)>=3; Current
=Current
->next
) while(Current->next!=NULL)
{
if(strlen(Current
->next
->text
)>=3) {
Buffer=Current->next;
Current->next=Current->next->next;
}
else
{
Current=Current->next;
}
}
return First;
}
void to_print_the_node(struct Word* First)
{
struct Word* Current;
for(Current=First; Current!=NULL; Current=Current->next)
{
}
}
void to_free_the_memory(struct Word* First)
{
struct Word* Current;
for(Current=First; Current!=NULL; Current=Current->next)
{
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBXT1JEU0laRSA2NAoKc3RydWN0IFdvcmQKewogICAgIGNoYXIqIHRleHQ7CiAgICAgc3RydWN0IFdvcmQqIG5leHQ7Cn07CgpzdHJ1Y3QgV29yZCogdG9fY3JlYXRlX3RoZV9lbGVtZW50X29mX3RoZV9ub2RlKGNoYXIqIGJ1ZmYpOwpzdHJ1Y3QgV29yZCogdG9fY2hhbmdlX3RoZV9ub2RlKHN0cnVjdCBXb3JkKiBGaXJzdCk7CnZvaWQgdG9fcHJpbnRfdGhlX25vZGUoc3RydWN0IFdvcmQqIEZpcnN0KTsKdm9pZCB0b19mcmVlX3RoZV9tZW1vcnkoc3RydWN0IFdvcmQqIEZpcnN0KTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKICAgICBpbnQgc3ltYm9sOwogICAgIGludCBpOwogICAgIGNoYXIgYnVmZltXT1JEU0laRV07CiAgICAgRklMRSogb3BlbjsKICAgICBzdHJ1Y3QgV29yZCogQ3VycmVudDsKICAgICBDdXJyZW50PU5VTEw7CiAgICAgc3RydWN0IFdvcmQqIFByZXZpb3VzOwogICAgIFByZXZpb3VzPU5VTEw7CiAgICAgc3RydWN0IFdvcmQqIEZpcnN0OwogICAgIEZpcnN0PU5VTEw7CgogICAgIGlmKGFyZ2M8MikKICAgICB7CiAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlRleHQgZmlsZSBpcyBub3Qgc3RhdGVkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgXG4iKTsKICAgICAgICAgIGV4aXQoMCk7CiAgICAgfQogICAgIGlmKGFyZ2M+MikKICAgICB7CiAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlRvbyBtdWNoIG9mIGFyZ3VtZW50cyBcbiIpOwogICAgICAgICAgZXhpdCgwKTsKICAgICB9CiAgICAgaWYoKG9wZW49Zm9wZW4oYXJndlsxXSwgInIiKSk9PU5VTEwpCiAgICAgewogICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4gbm90IG9wZW4gZmlsZSBmb3IgcmVhZGluZyBcbiIpOwogICAgICAgICAgZXhpdCgwKTsKICAgICB9CiAgICAgZm9yKGk9MDsgc3ltYm9sPShnZXRjKG9wZW4pKSE9RU9GOykKICAgICB7CiAgICAgICAgICBpZihzeW1ib2whPSdcbicgJiYgc3ltYm9sIT0nICcgJiYgc3ltYm9sIT0nXHQnKQogICAgICAgICAgewogICAgICAgICAgICAgICBidWZmW2ldPXN5bWJvbDsKICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgfQogICAgICAgICAgaWYoc3ltYm9sPT0nXG4nIHx8IHN5bWJvbD09JyAnIHx8IHN5bWJvbD09J1x0JykKICAgICAgICAgIHsKICAgICAgICAgICAgICAgYnVmZltpXT09J1wwJzsKICAgICAgICAgICAgICAgaT0wOwogICAgICAgICAgICAgICBpZihGaXJzdD09TlVMTCkKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEZpcnN0PXRvX2NyZWF0ZV90aGVfZWxlbWVudF9vZl90aGVfbm9kZShidWZmKTsKICAgICAgICAgICAgICAgICAgICBDdXJyZW50PUZpcnN0OwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFByZXZpb3VzPUN1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgQ3VycmVudD10b19jcmVhdGVfdGhlX2VsZW1lbnRfb2ZfdGhlX25vZGUoYnVmZik7CiAgICAgICAgICAgICAgICAgICAgUHJldmlvdXMtPm5leHQ9Q3VycmVudDsKICAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgIH0KICAgICB0b19jaGFuZ2VfdGhlX25vZGUoRmlyc3QpOwogICAgIHRvX3ByaW50X3RoZV9ub2RlKEZpcnN0KTsKICAgICBmb3IoQ3VycmVudD1GaXJzdDsgQ3VycmVudCE9TlVMTDsgQ3VycmVudD1DdXJyZW50LT5uZXh0KQogICAgIHsKICAgICAgICAgIHByaW50ZigiJXMiLCBDdXJyZW50LT50ZXh0KTsKICAgICB9CiAgICAgdG9fZnJlZV90aGVfbWVtb3J5KEZpcnN0KTsKfQogICAgICAgICAgICAgICAKc3RydWN0IFdvcmQqIHRvX2NyZWF0ZV90aGVfZWxlbWVudF9vZl90aGVfbm9kZShjaGFyKiBidWZmKQp7CiAgICAgc3RydWN0IFdvcmQqIEVsZW1lbnQ7CiAgICAgRWxlbWVudD0oc3RydWN0IFdvcmQqKW1hbGxvYyhzaXplb2Yoc3RydWN0IFdvcmQpKTsKICAgICBFbGVtZW50LT5uZXh0PU5VTEw7CiAgICAgc3RyY3B5KEVsZW1lbnQtPnRleHQsYnVmZik7CiAgICAgcmV0dXJuIEVsZW1lbnQ7Cn0KCnN0cnVjdCBXb3JkKiB0b19jaGFuZ2VfdGhlX25vZGUoc3RydWN0IFdvcmQqIEZpcnN0KQp7CiAgICAgc3RydWN0IFdvcmQqIEN1cnJlbnQ7CiAgICAgc3RydWN0IFdvcmQqIEJ1ZmZlcjsKICAgICBmb3IoQ3VycmVudD1GaXJzdDsgQ3VycmVudCE9TlVMTCB8fCBzdHJsZW4oQ3VycmVudC0+dGV4dCk+PTM7IEN1cnJlbnQ9Q3VycmVudC0+bmV4dCkKICAgICB3aGlsZShDdXJyZW50LT5uZXh0IT1OVUxMKQogICAgIHsKICAgICAgICAgIGlmKHN0cmxlbihDdXJyZW50LT5uZXh0LT50ZXh0KT49MykKICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBCdWZmZXI9Q3VycmVudC0+bmV4dDsKICAgICAgICAgICAgICAgICBDdXJyZW50LT5uZXh0PUN1cnJlbnQtPm5leHQtPm5leHQ7CiAgICAgICAgICAgICAgICAgZnJlZShCdWZmZXIpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICAgICBDdXJyZW50PUN1cnJlbnQtPm5leHQ7CiAgICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBGaXJzdDsKfQoKdm9pZCB0b19wcmludF90aGVfbm9kZShzdHJ1Y3QgV29yZCogRmlyc3QpCnsKICAgICBzdHJ1Y3QgV29yZCogQ3VycmVudDsKICAgICBmb3IoQ3VycmVudD1GaXJzdDsgQ3VycmVudCE9TlVMTDsgQ3VycmVudD1DdXJyZW50LT5uZXh0KQogICAgIHsKICAgICAgICAgIHByaW50ZigiJXMiLCBDdXJyZW50LT50ZXh0KTsKICAgICB9Cn0KCnZvaWQgdG9fZnJlZV90aGVfbWVtb3J5KHN0cnVjdCBXb3JkKiBGaXJzdCkKewogICAgIHN0cnVjdCBXb3JkKiBDdXJyZW50OwogICAgIGZvcihDdXJyZW50PUZpcnN0OyBDdXJyZW50IT1OVUxMOyBDdXJyZW50PUN1cnJlbnQtPm5leHQpCiAgICAgewogICAgICAgICAgZnJlZShDdXJyZW50KTsKICAgICB9Cn0KCg==