#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char rbuf[128];
char* rstring = "Test1\n"
"Test2\n"
"Test30\n";
char wbuf[128];
void create_file(void)
{
FILE* fp = fmemopen(rbuf, sizeof(rbuf), "w");
}
void swap(char* a, char* b)
{
char c = *a;
*a = *b;
*b = c;
}
char* strrev(char* str)
{
int i;
for (i
=0; i
<strlen(str
)/2; i
++) swap
(&str
[i
], &str
[strlen(str
)-1-i
]); return str;
}
int main(void)
{
FILE *fp_r, *fp_w, *fp2;
char* buf
= malloc(sizeof(rbuf
)); char* buf2;
/* Create Dummy File */
create_file();
/* Open Read/Write File */
fp_r = fmemopen(rbuf, sizeof(rbuf), "r");
fp_w = fmemopen(wbuf, sizeof(wbuf), "w");
/* Read from Dummy Read File */
fgets(buf
, sizeof(rbuf
), fp_r
); /* Reverse string */
strrev(buf);
/* Write to Write File */
}
/* Check */
fp2 = fmemopen(wbuf, sizeof(wbuf), "r");
fread(buf2
, sizeof(wbuf
), 1, fp2
);
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKY2hhciByYnVmWzEyOF07CmNoYXIqIHJzdHJpbmcgPSAiVGVzdDFcbiIKICAgICAgICAgICAgICAgICJUZXN0MlxuIgogICAgICAgICAgICAgICAgIlRlc3QzMFxuIjsKY2hhciB3YnVmWzEyOF07Cgp2b2lkIGNyZWF0ZV9maWxlKHZvaWQpCnsKICBGSUxFKiBmcCA9IGZtZW1vcGVuKHJidWYsIHNpemVvZihyYnVmKSwgInciKTsKICBmd3JpdGUocnN0cmluZywgc3RybGVuKHJzdHJpbmcpICsgMSwgMSwgZnApOwogIGZjbG9zZShmcCk7Cn0KCnZvaWQgc3dhcChjaGFyKiBhLCBjaGFyKiBiKQp7CiAgY2hhciBjID0gKmE7CiAgKmEgPSAqYjsKICAqYiA9IGM7Cn0KCmNoYXIqIHN0cnJldihjaGFyKiBzdHIpCnsKICBpbnQgaTsKICBmb3IgKGk9MDsgaTxzdHJsZW4oc3RyKS8yOyBpKyspCiAgICBzd2FwKCZzdHJbaV0sICZzdHJbc3RybGVuKHN0ciktMS1pXSk7CiAgcmV0dXJuIHN0cjsKfQoKCmludCBtYWluKHZvaWQpCnsKICBGSUxFICpmcF9yLCAqZnBfdywgKmZwMjsKICBjaGFyKiBidWYgPSBtYWxsb2Moc2l6ZW9mKHJidWYpKTsKICBjaGFyKiBidWYyOwoKICAvKiBDcmVhdGUgRHVtbXkgRmlsZSAqLwogIGNyZWF0ZV9maWxlKCk7CgogIC8qIE9wZW4gUmVhZC9Xcml0ZSBGaWxlICovCiAgZnBfciA9IGZtZW1vcGVuKHJidWYsIHNpemVvZihyYnVmKSwgInIiKTsKICBmcF93ID0gZm1lbW9wZW4od2J1Ziwgc2l6ZW9mKHdidWYpLCAidyIpOwoKICB3aGlsZSAoIWZlb2YoZnBfcikpIHsKICAgIC8qIFJlYWQgZnJvbSBEdW1teSBSZWFkIEZpbGUgKi8KICAgIGZnZXRzKGJ1Ziwgc2l6ZW9mKHJidWYpLCBmcF9yKTsKICAgIC8qIFJldmVyc2Ugc3RyaW5nICovCiAgICBidWZbc3RybGVuKGJ1ZiktMV0gPSBOVUxMOwogICAgc3RycmV2KGJ1Zik7CiAgICBidWZbc3RybGVuKGJ1ZildID0gJ1xuJzsKICAgIC8qIFdyaXRlIHRvIFdyaXRlIEZpbGUgKi8KICAgIGZwdXRzKGJ1ZiwgZnBfdyk7CiAgfQoKICBmcmVlKGJ1Zik7CiAgZmNsb3NlKGZwX3IpOwogIGZjbG9zZShmcF93KTsKCiAgLyogQ2hlY2sgKi8KICBmcDIgPSBmbWVtb3Blbih3YnVmLCBzaXplb2Yod2J1ZiksICJyIik7CiAgYnVmMiA9IG1hbGxvYyhzaXplb2Yod2J1ZikpOwogIGZyZWFkKGJ1ZjIsIHNpemVvZih3YnVmKSwgMSwgZnAyKTsKICBmcHJpbnRmKHN0ZG91dCwgIiVzIiwgYnVmMik7CiAgZnJlZShidWYyKTsKICBmY2xvc2UoZnAyKTsKCiAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQo=