#include<stdio.h>
#include<stdlib.h>
char *s_getany(int chunklen);
int main()
{
char input[2];
int chunklen;
fgets(input
, 2 , stdin
);
s_getany(chunklen);
}
char *s_getany( int chunklen )
{
int i = 0;
char *s = NULL, *try = NULL;
if ( chunklen
< 1 || NULL
== (s
= calloc( chunklen
+1, sizeof(char)) ) ) return NULL; /* Αν το μήκος του string (chunklen) ειναι μικρότερο απο 1
ή ο δείκτης ειναι NULL επέστρεψε NULL */
for (i
=0; EOF
!= (s
[i
] = getchar()) && s
[i
] != '\n'; i
++) // Μέχρι να επιστραφεί EOF ή να δοθεί '\n' εκτέλεσε {
if ( i != 0 && i % chunklen == 0 ) // Aπο i=1 θες αλλιώς δίνοντας 6 μήκος string μέχρι να φτάσει
// στο τελευταίο στοιχείο το οποίο ειναι αυτο που έχει υπόλοιπο i με chunklen 0
// δηλαδη 6/6 θα ήθελες 7 στοιχεία (απο i=0)
{
try
= realloc(s
, (i
+chunklen
+1) * sizeof(char) ); /* Δέσμευε κάθε φορα την κατάσταση του i + το μέγεθος που έδωσε ο χρήστης + τον μηδενικό */
if ( !try ) {
s = NULL;
return NULL;
}
s = try; // Ο s δείχνει οπου και ο try
}
}
s[i] = '\0'; // Μanually τοποθέτηση του μηδενικού.
if ( NULL
== (try
= realloc(s
, (i
+1) * sizeof(char) )) ) return NULL;
return try;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CmNoYXIgKnNfZ2V0YW55KGludCBjaHVua2xlbik7CgppbnQgbWFpbigpCnsKCWNoYXIgaW5wdXRbMl07CglpbnQgY2h1bmtsZW47CgkKCXByaW50ZigiIEdpdmUgdGhlIGxlbmd0aDogIik7CglmZ2V0cyhpbnB1dCAsIDIgLCBzdGRpbik7CgljaHVua2xlbj0gYXRvaShpbnB1dCk7CgkKCXNfZ2V0YW55KGNodW5rbGVuKTsKCQpleGl0KEVYSVRfU1VDQ0VTUyk7Cgp9CmNoYXIgKnNfZ2V0YW55KCBpbnQgY2h1bmtsZW4gKQp7CiAgIGludCBpID0gMDsgICAgICAgICAgICAgICAgIAogICBjaGFyICpzID0gTlVMTCwgKnRyeSA9IE5VTEw7CgoKICAgaWYgKCBjaHVua2xlbiA8IDEgfHwgTlVMTCA9PSAocyA9IGNhbGxvYyggY2h1bmtsZW4rMSwgc2l6ZW9mKGNoYXIpKSApICkKICAgICAgcmV0dXJuIE5VTEw7ICAvKiDOkc69IM+Ezr8gzrzOrs66zr/PgiDPhM6/z4Ugc3RyaW5nIChjaHVua2xlbikgzrXOuc69zrHOuSDOvM65zrrPgc+Mz4TOtc+Bzr8gzrHPgM6/IDEKICAgICAgICAgICAgICAgICAgICDOriDOvyDOtM61zq/Ous+EzrfPgiDOtc65zr3Osc65IE5VTEwgzrXPgM6tz4PPhM+BzrXPiM61IE5VTEwgKi8gCgogICBmb3IgKGk9MDsgRU9GICE9IChzW2ldID0gZ2V0Y2hhcigpKSAmJiBzW2ldICE9ICdcbic7IGkrKykgIC8vIM6czq3Ph8+Bzrkgzr3OsSDOtc+AzrnPg8+Ez4HOsc+GzrXOryBFT0Ygzq4gzr3OsSDOtM6/zrjOtc6vICdcbicgzrXOus+Ezq3Ou861z4POtQogICB7CiAgICAgIGlmICggaSAhPSAwICYmIGkgJSBjaHVua2xlbiA9PSAwICkgICAvLyBBz4DOvyBpPTEgzrjOtc+CIM6xzrvOu865z47PgiDOtM6vzr3Ov869z4TOsc+CIDYgzrzOrs66zr/PgiBzdHJpbmcgzrzOrc+Hz4HOuSDOvc6xIM+Gz4TOrM+DzrXOuQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIM+Dz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4PPhM6/zrnPh861zq/OvyDPhM6/IM6/z4DOv86vzr8gzrXOuc69zrHOuSDOsc+Fz4TOvyDPgM6/z4Ugzq3Ph861zrkgz4XPgM+MzrvOv865z4DOvyBpIM68zrUgY2h1bmtsZW4gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIM60zrfOu86xzrTOtyA2LzYgzrjOsSDOrs64zrXOu861z4IgNyDPg8+Ezr/Ouc+HzrXOr86xICjOsc+Azr8gaT0wKSAgIAogICAgICB7CiAgICAgICAgIHRyeSA9IHJlYWxsb2MocywgKGkrY2h1bmtsZW4rMSkgKiBzaXplb2YoY2hhcikgKTsgLyogzpTOrc+DzrzOtc+FzrUgzrrOrM64zrUgz4bOv8+BzrEgz4TOt869IM66zrHPhM6sz4PPhM6xz4POtyDPhM6/z4UgaSArIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIM+Ezr8gzrzOrc6zzrXOuM6/z4Igz4DOv8+FIM6tzrTPic+DzrUgzr8gz4fPgc6uz4PPhM63z4IgKyDPhM6/zr0gzrzOt860zrXOvc65zrrPjCAqLwogICAgICAgICBpZiAoICF0cnkgKSB7ICAgICAgICAgICAKICAgICAgICAgICAgZnJlZShzKTsKICAgICAgICAgICAgcyA9IE5VTEw7CiAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHMgPSB0cnk7IC8vIM6fIHMgzrTOtc6vz4fOvc61zrkgzr/PgM6/z4UgzrrOsc65IM6/IHRyeSAgICAgICAgICAgIAogICAgICB9CiAgIH0KICAgc1tpXSA9ICdcMCc7ICAvLyDOnGFudWFsbHkgz4TOv8+Azr/OuM6tz4TOt8+Dzrcgz4TOv8+FIM68zrfOtM61zr3Ouc66zr/PjS4KCiAgIGlmICggTlVMTCA9PSAodHJ5ID0gcmVhbGxvYyhzLCAoaSsxKSAqIHNpemVvZihjaGFyKSApKSApCiAgICAgIHJldHVybiBOVUxMOwoKICAgcmV0dXJuIHRyeTsKfQ==