#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define S_SPACE 0
#define S_CHAR 1
void substr(char buf[], char *str, int wstart, int wend) {
strncpy(buf
, str
+ wstart
, wend
- wstart
+ 1); buf[wend - wstart + 1] = '\0';
}
main()
{
char *s = "It was a pleasant evening. A boy and a girl sat in the park.";
int i, j, state, newstate;
char *caption;
char status[80], wordbuf[80];
int wordstart, wordend, wordlen;
state
= isspace(s
[i
]) ? S_SPACE
: S_CHAR
; --i;
wordend = i;
while (i >= 0) {
newstate
= isspace(s
[i
]) ? S_SPACE
: S_CHAR
; if (newstate != state) {
if (newstate == S_SPACE) {
substr(wordbuf, s, i + 1, wordend);
}
else {
wordend = i;
}
state = newstate;
}
else {
}
--i;
}
// Dump the remains if still in char state
if (state == S_CHAR) {
substr(wordbuf, s, 0, wordend);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBTX1NQQUNFIDAKI2RlZmluZSBTX0NIQVIgMQoKdm9pZCBzdWJzdHIoY2hhciBidWZbXSwgY2hhciAqc3RyLCBpbnQgd3N0YXJ0LCBpbnQgd2VuZCkgewogICAgc3RybmNweShidWYsIHN0ciArIHdzdGFydCwgd2VuZCAtIHdzdGFydCArIDEpOwogICAgYnVmW3dlbmQgLSB3c3RhcnQgKyAxXSA9ICdcMCc7Cn0KCm1haW4oKQp7CiAgICBjaGFyICpzID0gIkl0IHdhcyBhIHBsZWFzYW50IGV2ZW5pbmcuICBBIGJveSBhbmQgYSBnaXJsIHNhdCBpbiB0aGUgcGFyay4iOwogICAgaW50IGksIGosIHN0YXRlLCBuZXdzdGF0ZTsKICAgIGNoYXIgKmNhcHRpb247CiAgICBjaGFyIHN0YXR1c1s4MF0sIHdvcmRidWZbODBdOwogICAgaW50IHdvcmRzdGFydCwgd29yZGVuZCwgd29yZGxlbjsKCiAgICBpID0gc3RybGVuKHMpOwogICAgc3RhdGUgPSBpc3NwYWNlKHNbaV0pID8gU19TUEFDRSA6IFNfQ0hBUjsKICAgIC0taTsKICAgIHdvcmRlbmQgPSBpOwoKICAgIHdoaWxlIChpID49IDApIHsKICAgICAgICBuZXdzdGF0ZSA9IGlzc3BhY2Uoc1tpXSkgPyBTX1NQQUNFIDogU19DSEFSOwogICAgICAgIGlmIChuZXdzdGF0ZSAhPSBzdGF0ZSkgewogICAgICAgICAgICBpZiAobmV3c3RhdGUgPT0gU19TUEFDRSkgewogICAgICAgICAgICAgICAgc3Vic3RyKHdvcmRidWYsIHMsIGkgKyAxLCB3b3JkZW5kKTsKICAgICAgICAgICAgICAgIHByaW50ZigiJXMgIiwgd29yZGJ1Zik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB3b3JkZW5kID0gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0ZSA9IG5ld3N0YXRlOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICB9CiAgICAgICAgLS1pOwogICAgfQoKICAgIC8vIER1bXAgdGhlIHJlbWFpbnMgaWYgc3RpbGwgaW4gY2hhciBzdGF0ZQogICAgaWYgKHN0YXRlID09IFNfQ0hBUikgewogICAgICAgIHN1YnN0cih3b3JkYnVmLCBzLCAwLCB3b3JkZW5kKTsKICAgICAgICBwcmludGYoIiVzXG4iLCB3b3JkYnVmKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=