#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20
int my_isspace(char c) {
return (c == ' ' || c == ',' || c == '.' || c == '\n');
}
int read_word(FILE *fp,char buf[N]){
int i=0;
for(i=0;i<N;i++){
buf[i] = '\0';
}
char c;
while (c
= fgetc(fp
), c
!= EOF
&& my_isspace
(c
)) ;
if (c == EOF)
return 0;
buf[0] = c;
i = 1;
while(((c
= fgetc(fp
)) != EOF
) && i
< N
- 1) { buf[i] = c;
if(my_isspace(c)){
buf[i] = '\0';
break;
}
i++;
}
if (c == EOF) {
buf[i] = '\0';
}
if (i == N - 1) {
buf[N - 1] = '\0';
}
return i;
}
#define M 400
int main() {
char buf[N];
FILE *fp;
char *word[M];
fp
= fopen("anne_short.txt","r"); if(fp == NULL){
}
int i;
for (i = 0; i < M; i++) {
char *p;
int n = read_word(fp, buf);
if (n == 0)
break;
if ((p
= malloc(n
+ 1)) == 0) { printf("memory full, aborted.\n"); }
word[i] = p;
}
word[i] = 0;
for (i = 0; word[i] != 0; i++)
return 0;
}
/* end */
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBOIDIwCgppbnQgbXlfaXNzcGFjZShjaGFyIGMpIHsKICByZXR1cm4gKGMgPT0gJyAnIHx8IGMgPT0gJywnIHx8IGMgPT0gJy4nIHx8IGMgPT0gJ1xuJyk7Cn0KCmludCByZWFkX3dvcmQoRklMRSAqZnAsY2hhciBidWZbTl0pewogIGludCBpPTA7CiAgZm9yKGk9MDtpPE47aSsrKXsKICAgIGJ1ZltpXSA9ICdcMCc7CiAgfQoKICBjaGFyIGM7CiAgd2hpbGUgKGMgPSBmZ2V0YyhmcCksIGMgIT0gRU9GICYmIG15X2lzc3BhY2UoYykpCiAgICA7CiAgaWYgKGMgPT0gRU9GKQogICAgcmV0dXJuIDA7CiAgYnVmWzBdID0gYzsKICBpID0gMTsKICB3aGlsZSgoKGMgPSBmZ2V0YyhmcCkpICE9IEVPRikgJiYgaSA8IE4gLSAxKSB7CiAgICBidWZbaV0gPSBjOwogICAgaWYobXlfaXNzcGFjZShjKSl7CiAgICAgIGJ1ZltpXSA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgfQogICAgaSsrOwogIH0KICBpZiAoYyA9PSBFT0YpIHsKICAgIGJ1ZltpXSA9ICdcMCc7CiAgfQogIGlmIChpID09IE4gLSAxKSB7CiAgICB1bmdldGMoYywgZnApOwogICAgYnVmW04gLSAxXSA9ICdcMCc7CiAgfQogIHJldHVybiBpOwp9CgojZGVmaW5lIE0gNDAwCmludCBtYWluKCkgewogIGNoYXIgYnVmW05dOwogIEZJTEUgKmZwOwogIGNoYXIgKndvcmRbTV07CgogIGZwID0gZm9wZW4oImFubmVfc2hvcnQudHh0IiwiciIpOwogIGlmKGZwID09IE5VTEwpewogICAgcHJpbnRmKCJGaWxlIHJlYWQgZXJyb3IhXG4iKTsKICAgIGV4aXQoMSk7CiAgfQogIGludCBpOwogIGZvciAoaSA9IDA7IGkgPCBNOyBpKyspIHsKICAgIGNoYXIgKnA7CiAgICBpbnQgbiA9IHJlYWRfd29yZChmcCwgYnVmKTsKICAgIGlmIChuID09IDApCiAgICAgIGJyZWFrOwogICAgaWYgKChwID0gbWFsbG9jKG4gKyAxKSkgPT0gMCkgewogICAgICBwcmludGYoIm1lbW9yeSBmdWxsLCBhYm9ydGVkLlxuIik7CiAgICAgIGV4aXQoMSk7CiAgICB9CiAgICBzdHJjcHkocCwgYnVmKTsKICAgIHdvcmRbaV0gPSBwOwogIH0KICB3b3JkW2ldID0gMDsKICBmb3IgKGkgPSAwOyB3b3JkW2ldICE9IDA7IGkrKykKICAgIHByaW50ZigiJXNcbiIsIHdvcmRbaV0pOwogIHByaW50ZigiaSA9ICVkXG4iLCBpKTsKCiAgZmNsb3NlKGZwKTsKICByZXR1cm4gMDsKfQovKiBlbmQgKi8K