#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
typedef struct node *NodePtr;
struct node {
char *string;
NodePtr next;
};
NodePtr initNode (char *s) {
NodePtr n
= malloc (sizeof (struct node
));
n->string = s;
n->next = NULL;
return n;
}
void freeList (NodePtr h) {
NodePtr curr;
while ((curr = h) != NULL) {
h = h->next;
}
}
int main (void) {
char input[BUFSIZ];
char *token = NULL;
char output[BUFSIZ*2];
memset (input
, 0, sizeof (input
)); memset (output
, 0, sizeof (output
));
fgets (input
, sizeof (input
), stdin
);
NodePtr head = initNode (token);
NodePtr current = head;
while (token != NULL) {
current->next = initNode (token);
if (current->string != NULL) {
if (strncmp (current
->string
, "foo", strlen (current
->string
)) == 0) { current->string = "bar";
}
}
current = current->next;
}
for (current = head; current->next != NULL; current = current->next) {
}
freeList (head);
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8YXNzZXJ0Lmg+Cgp0eXBlZGVmIHN0cnVjdCBub2RlICpOb2RlUHRyOwoKc3RydWN0IG5vZGUgewoJY2hhciAqc3RyaW5nOwoJTm9kZVB0ciBuZXh0Owp9OwoKTm9kZVB0ciBpbml0Tm9kZSAoY2hhciAqcykgewoJTm9kZVB0ciBuID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCBub2RlKSk7Cglhc3NlcnQgKG4gIT0gTlVMTCk7CgkKCW4tPnN0cmluZyA9IHM7CgluLT5uZXh0ID0gTlVMTDsKCglyZXR1cm4gbjsKfQoKdm9pZCBmcmVlTGlzdCAoTm9kZVB0ciBoKSB7CglOb2RlUHRyIGN1cnI7Cgl3aGlsZSAoKGN1cnIgPSBoKSAhPSBOVUxMKSB7CgkJaCA9IGgtPm5leHQ7CgkJZnJlZSAoY3Vycik7Cgl9Cn0KCmludCBtYWluICh2b2lkKSB7CgljaGFyIGlucHV0W0JVRlNJWl07CgljaGFyICp0b2tlbiA9IE5VTEw7CgljaGFyIG91dHB1dFtCVUZTSVoqMl07CgoJbWVtc2V0IChpbnB1dCwgMCwgc2l6ZW9mIChpbnB1dCkpOwoJbWVtc2V0IChvdXRwdXQsIDAsIHNpemVvZiAob3V0cHV0KSk7CgkKCWZnZXRzIChpbnB1dCwgc2l6ZW9mIChpbnB1dCksIHN0ZGluKTsKCgl0b2tlbiA9IHN0cnRvayAoaW5wdXQsICIgIik7CglOb2RlUHRyIGhlYWQgPSBpbml0Tm9kZSAodG9rZW4pOwoJTm9kZVB0ciBjdXJyZW50ID0gaGVhZDsKCgl3aGlsZSAodG9rZW4gIT0gTlVMTCkgewoJCXRva2VuID0gc3RydG9rIChOVUxMLCAiICIpOwoJCWN1cnJlbnQtPm5leHQgPSBpbml0Tm9kZSAodG9rZW4pOwoJCWlmIChjdXJyZW50LT5zdHJpbmcgIT0gTlVMTCkgewoJCQlpZiAoc3RybmNtcCAoY3VycmVudC0+c3RyaW5nLCAiZm9vIiwgc3RybGVuIChjdXJyZW50LT5zdHJpbmcpKSA9PSAwKSB7CgkJCQljdXJyZW50LT5zdHJpbmcgPSAiYmFyIjsKCQkJfQoJCX0KCQljdXJyZW50ID0gY3VycmVudC0+bmV4dDsKCX0KCglmb3IgKGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50LT5uZXh0ICE9IE5VTEw7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KSB7CgkJc25wcmludGYgKG91dHB1dCtzdHJsZW4gKG91dHB1dCksIHNpemVvZiAob3V0cHV0KSAtIHN0cmxlbiAob3V0cHV0KSwgIiVzICIsIGN1cnJlbnQtPnN0cmluZyk7Cgl9CgoJcHJpbnRmICgiJXNcbiIsIG91dHB1dCk7CgoJZnJlZUxpc3QgKGhlYWQpOwoKCXJldHVybiBFWElUX1NVQ0NFU1M7Cn0=