Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static char* put_replacement(char* out, const char* r, int len)
- {
- memcpy(out, r, len);
- return out + len;
- }
- static void replace(const char* in, char* out, int outlen)
- {
- const char* r = "NUM";
- const char* q;
- int flag = 0;
- char p;
- while ((p = *in++)) {
- if (flag == 0) {
- if (isdigit(p)) {
- q = in - 1;
- flag = 1;
- continue;
- }
- if (isalpha(p))
- flag = 2;
- }
- if (flag == 1) {
- if (isdigit(p))
- continue;
- if (isalpha(p)) {
- out = put_replacement(out, q, in - 1 - q);
- flag = 2;
- }
- else {
- out = put_replacement(out, r, strlen(r));
- flag = 0;
- }
- }
- if (flag == 2 && !(isalpha(p) || isdigit(p))) {
- flag = 0;
- }
- *out++ = p;
- }
- if (flag == 1)
- out = put_replacement(out, r, strlen(r));
- *out++ = '\0';
- }
- const char* input = "for (int i = 0; i < 9; i++)";
- int main(int argc, char* argv[])
- {
- const char* in = input;
- size_t outlen;
- char* out;
- outlen = strlen(in) * 3 / 2 + 1;
- out = malloc(outlen);
- if (!out)
- return ENOMEM;
- replace(in, out, outlen);
- printf("in: %s\n", in);
- printf("out: %s\n", out);
- free(out);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement