salve, vorrei sapere perchè il codice sopra riportanto non funziona. Non stampa la stringa c.codice:#include <stdio.h> #include <strings.h> #include <malloc.h> class Stringa { public: char *s; int lunghezza; public: Stringa(void) { s = (char *)malloc(512); s[0] = '\0'; lunghezza = 0; } Stringa(char *p) { s = (char *)malloc(512); int i; for (i = 0; (s[i] = p[i]) != '\0'; i++) ; lunghezza = i; } Stringa(int k) { s = (char *)malloc(k); s[0] = '\0'; lunghezza = 0; } Stringa(char *p, int k) { s = (char *)malloc(k); int i; for (i = 0; (s[i] = p[i]) != '\0'; i++) ; lunghezza = i; } ~Stringa(void) { s[0] = '\0'; lunghezza = 0; } void write(void) { printf("%s",s); } void writeln(void) { printf("%s\n",s); } int lung(void) { return lunghezza; } void input(void) { char c; int i; for (i = 0; (c = getchar()) != '\n'; i++) s[i] = c; s[i] = '\0'; lunghezza = i; } void modifica(int i, char c) { if (i > 0 && i <= lunghezza) s[i-1] = c; } int operator==(Stringa &x) { return !(strcmp(s,x.s)); } int operator==(char *x) { return !(strcmp(s,x)); } int operator<(Stringa &x) { return (strcmp(s,x.s) == -1); } int operator<(char *x) { return (strcmp(s,x) == -1); } int operator>(Stringa &x) { return (strcmp(s,x.s) == 1); } int operator>(char *x) { return (strcmp(s,x) == 1); } int operator<=(Stringa &x) { return ((*this == x) || (*this < x)); } int operator<=(char *x) { return ((*this == x) || (*this < x)); } int operator>=(Stringa &x) { return ((*this > x) || (*this == x)); } int operator>=(char *x) { return ((*this > x) || (*this == x)); } Stringa operator+(Stringa &x) { Stringa z; int i,k; for (i = 0; s[i] != '\0'; i++) z.s[i] = s[i]; for (k = 0; x.s[k] != '\0'; k++) z.s[i++] = x.s[k]; z.s[i] = '\0'; z.lunghezza = i; return z; } void operator+=(Stringa &x) { *this = *this + x; } void operator=(char *z) { int i; for (i = 0; (s[i] = z[i]) != '\0'; i++) ; lunghezza = i; } }; #include <stdlib.h> int main() { system("cls"); Stringa a; Stringa b; Stringa c; a.input(); b.input(); c = a + b; printf("\n\n"); a.writeln(); b.writeln(); c.write(); }
Però se s lo metto come un array statico va tutto bene... qualcuno mi può aiutare?