#include #include #include #ifndef INPUT_FROM_STDIN #define INPUT_FROM_STDIN 1 #endif int twotimes(const char * s, size_t len) { /* s MAY contain a null character ('\0') */ size_t m = len / 2; if (len - m != m) return 0; for (size_t i = 0; i < m; ++i) if (s[i] != s[i + m]) return 0; return 1; } #if INPUT_FROM_STDIN int main(int argc, const char * argv[]) { char buf[1000]; if (fgets(buf, 1000, stdin)) { size_t len = strlen(buf); if (buf[len - 1] == '\n') len = len - 1; printf("%s\n", twotimes(buf, len) ? "YES" : "NO"); } else { printf("Error\n"); } } #else int main(int argc, const char * argv[]) { int i; /* iterate through the command-line arguments */ for (i = 1; i < argc; ++i) printf("'%s' %s\n", argv[i], twotimes(argv[i], strlen(argv[i])) ? "YES" : "NO"); } #endif