|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
#include <stdio.h> #include <string.h> #include <stdlib.h> void strcat_allocazione_dinamica(char *a,char *b,char **c); main() { char *a, *b, *c; a=(char *)malloc(20*sizeof(char)); puts("Digita 1 stringa"); gets(a); b=(char *)malloc(20*sizeof(char)); puts("Digita un'altra stringa"); gets(b); strcat_allocazione_dinamica(a,b,&c); puts("Risultato"); printf("%s",c); printf("\n"); free(c); system("pause"); } void strcat_allocazione_dinamica(char *a,char *b,char **c) { short n1,n2,n3; n1=strlen(a); n2=strlen(b); n3=n1+n2+1; *c=(char *)malloc(n3*sizeof(char)); memcpy(*c,a,n1); memmove(*c + n1, b, n2 + 1); } ![]() |
![]() |
![]() |
![]() |
#22 |
Member
Iscritto dal: Jan 2007
Messaggi: 173
|
Ah, cosi' gli dai lo /0 della stringa b, ottimo
io invece stavo provando a darlo a mano facendo qualcosa tipo *c+n3=(char)"/0"; ma mi da un errore : invalid lvalue in assignment vorrei imparare bene la sintassi per muovermi tramite indirizzo, dov'è che ho sbagliato? Grazie |
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
*c + (n3 - 1) = '/0';
I char singoli si mettono fra apici singoli. Fai qualche conto per capire il perchè del -1 ![]() |
![]() |
![]() |
![]() |
#24 |
Member
Iscritto dal: Jan 2007
Messaggi: 173
|
Si, mi sono fatto i conti ed è giusto.
Pero' da 1 errore e 1 warning invalid lvalue in assignment [Warning] multi-character character constant uso dev-c++ 4.9.9.2 ![]() |
![]() |
![]() |
![]() |
#25 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Intanto è \0 e non /0
![]() ![]() (*c)[n3 + 1] = '\0'; Evidentemente l'aritmetica dei puntatori non può essere usata come valore sinistro di una espressione...non mi era mai capitato di usarlo in questo modo... |
![]() |
![]() |
![]() |
#26 |
Member
Iscritto dal: Jan 2007
Messaggi: 173
|
Alleluia, l'esercizio è completo
Codice:
#include <stdio.h> #include <string.h> #include <stdlib.h> void strcat_allocazione_dinamica(char *a,char *b,char **c, short *x); main() { char *a, *b, *c; short x; a=(char *)malloc(20*sizeof(char)); puts("Digita 1 stringa"); gets(a); b=(char *)malloc(20*sizeof(char)); puts("Digita un'altra stringa"); gets(b); strcat_allocazione_dinamica(a,b,&c,&x); puts("Risultato"); printf("%s",c); printf("\nSe l'esercizio e' corretto uscira' 1, altrimenti 0\n%hd\n",x); free(a); free(b); free(c); system("pause"); } void strcat_allocazione_dinamica(char *a,char *b,char **c, short *x) { short n1,n2,n3,i; n1=strlen(a); n2=strlen(b); n3=n1+n2+1; *c=(char *)malloc(n3*sizeof(char)); memcpy(*c,a,n1); memmove(*c+n1,b,n2); (*c)[n3-1]='\0'; strcat(a,b); for (i=0;i<n3;i++) if (a[i]==(*c)[i]) *x=1; else *x=0; } ![]() Grazie mille a tutti, specialmente a cionci |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:05.