#include <stdio.h>
#define BUFF_SIZE 1024
/*
改行は無視してそのまま読込を行うfgetsもどき。
引数や戻り値はfgetsと同じ。
改行文字は'\r'と'\n'の両方が対象。
*/
char *fgets_without_nl(char *str, int size, FILE *stream);
int main(void) {
char buff[BUFF_SIZE];
fgets_without_nl(buff, BUFF_SIZE, stdin);
return 0;
}
char *fgets_without_nl(char *str, int size, FILE *stream) {
int c;
char *b_str;
char *e_str;
b_str = str;
e_str = str + size - 1;
while ((c
= getc(stream
)) != EOF
) { if (c != '\r' && c != '\n') {
*str++ = c;
if (str == e_str) {
break;
}
}
}
*str = '\0';
if (str
== b_str
|| ferror(stream
)) { return NULL;
} else {
return b_str;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgQlVGRl9TSVpFIDEwMjQKCi8qCiAg5pS56KGM44Gv54Sh6KaW44GX44Gm44Gd44Gu44G+44G+6Kqt6L6844KS6KGM44GGZmdldHPjgoLjganjgY3jgIIKICDlvJXmlbDjgoTmiLvjgorlgKTjga9mZ2V0c+OBqOWQjOOBmOOAggogIOaUueihjOaWh+Wtl+OBrydccifjgagnXG4n44Gu5Lih5pa544GM5a++6LGh44CCCiovCmNoYXIgKmZnZXRzX3dpdGhvdXRfbmwoY2hhciAqc3RyLCBpbnQgc2l6ZSwgRklMRSAqc3RyZWFtKTsKCmludCBtYWluKHZvaWQpIHsKCWNoYXIgYnVmZltCVUZGX1NJWkVdOwoJZmdldHNfd2l0aG91dF9ubChidWZmLCBCVUZGX1NJWkUsIHN0ZGluKTsKCXByaW50ZigiJXNcbiIsIGJ1ZmYpOwoJcmV0dXJuIDA7Cn0KCmNoYXIgKmZnZXRzX3dpdGhvdXRfbmwoY2hhciAqc3RyLCBpbnQgc2l6ZSwgRklMRSAqc3RyZWFtKSB7CglpbnQgYzsKCWNoYXIgKmJfc3RyOwoJY2hhciAqZV9zdHI7CgliX3N0ciA9IHN0cjsKCWVfc3RyID0gc3RyICsgc2l6ZSAtIDE7CgljbGVhcmVycihzdHJlYW0pOwoJd2hpbGUgKChjID0gZ2V0YyhzdHJlYW0pKSAhPSBFT0YpIHsKCQlpZiAoYyAhPSAnXHInICYmIGMgIT0gJ1xuJykgewoJCQkqc3RyKysgPSBjOwoJCQlpZiAoc3RyID09IGVfc3RyKSB7CgkJCQlicmVhazsKCQkJfQoJCX0KCQkKCX0KCSpzdHIgPSAnXDAnOwoJaWYgKHN0ciA9PSBiX3N0ciB8fCBmZXJyb3Ioc3RyZWFtKSkgewoJCXJldHVybiBOVUxMOwoJfSBlbHNlIHsKCQlyZXR1cm4gYl9zdHI7Cgl9Cn0K