migf1 έγραψε:Πολύ περιοριστικό μου ακούγεται εμένα.
/* --------------------------------------------------------------
* Από: migf1
* Διάβασμα ενός string, αντιστροφή του και τύπωμά του στην οθόνη
* --------------------------------------------------------------
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// ------------------------------------------------------------------------------------
// Διαβάζει έως len-1 χαρακτήρες ή μέχρι να πατηθεί ENTER και τους αποθηκεύει στο string
// s. Επιστρέφει το s χωρίς το ENTER και με μηδενισμένο τον τελικό χαρακτήρα
//
char *s_get(char *s, size_t len)
{
char *cp;
for (cp=s; (*cp=getc(stdin)) != '\n' && (cp-s) < len-1; cp++ )
; // for-loop with empty body
*cp = '\0'; // null-terminate last character
return s;
}
// ------------------------------------------------------------------------------------
// Αντιστρέφει το string s. Βάζει από έναν δείκτην στην αρχή και το τέλος του s, κι
// εναλλάσει τους χαρακτήρες τους μέχρι να συναντηθούν οι δυο δείκτες στη μέση του s
// ΣΗΜΑΝΤΙΚΟ: το s πρέπει να είναι ήδη δημιουργημένο.
//
char *s_reverse(char *s)
{
if ( !s ) // early exit
return NULL;
char *cp1, *cp2, dummy;
cp2 = s + strlen(s) - 1; // set cp2 at end of s
for (cp1=s; cp1 < cp2; cp1++, cp2--) {
dummy = *cp1;
*cp1 = *cp2;
*cp2 = dummy;
}
return s;
}
// ----------------------------------------------------------------------------------------
int main( void )
{
char s[255+1];
printf("Enter a string: ");
s_get(s, 256);
printf("Your string revesred is:\n\t%s", s_reverse(s) );
fflush(stdin); getchar();
exit( EXIT_SUCCESS );
}
migf1 έγραψε:Έχω μια ακόμα άσκηση, την οποία μάλιστα την ζητούσαν πολλοί σε job-interviews: γράψτε ένα πρόγραμμα που διαβάζει μια πρόταση και αντιστρέφει τις λέξεις της. Π.χ. η πρόταση "γειά σου κόσμε" γίνεται: "κόσμε σου γεια".
maenolis έγραψε:Α γιατί χάρηκα ότι έγινε εδώ αυτό!! Επειδή εδώ το μέσο μπακάλικο δεν αρκείται στην C αλλά τα θέλει όλα...