Bi0
31-01-2008, 22:21
Vi posto un programmino semplice che ho realizzato per concatenare due stringhe...
#include <stdio.h>
#define max_ele 1000
/* Programma con Funzione void unisci() che concatena due stringhe */
void unisci(char s1[], char s2[]){
int i, j;
for(i=strlen(s1), j=0; s2[j]!='\0'; i++, j++)
s1[i]=s2[j];
s1[i]='\0';
}
void main(){
char v1[max_ele];
char v2[max_ele];
int k;
printf("\nInserisci la 1a stringa: ");
/* fflush(stdin);
scanf("%[^\n]", &v1); */
for(k=0; (v1[k]=getchar())!='\n'; k++) ;
printf("\nInserisci la 2a stringa: ");
/* fflush(stdin);
scanf("%[^\n]", &v2); */
for(k=0; (v2[k]=getchar())!='\n'; k++) ;
unisci(v1, v2);
printf("\nLa stringa risultante e': %s", v1);
getch();
}
Ecco, il problema è che il programma, se non acquisisco le stringhe come ho fatto nel commento, cioè
/* fflush(stdin);
scanf("%[^\n]", &v1); */
Il programma non funziona correttamente...
Eppure la soluzione col for, l'avevo trovata sul libro di testo che abbiamo in dotazione... Qualcuno mi saprebbe spiegare il perché? :confused:
#include <stdio.h>
#define max_ele 1000
/* Programma con Funzione void unisci() che concatena due stringhe */
void unisci(char s1[], char s2[]){
int i, j;
for(i=strlen(s1), j=0; s2[j]!='\0'; i++, j++)
s1[i]=s2[j];
s1[i]='\0';
}
void main(){
char v1[max_ele];
char v2[max_ele];
int k;
printf("\nInserisci la 1a stringa: ");
/* fflush(stdin);
scanf("%[^\n]", &v1); */
for(k=0; (v1[k]=getchar())!='\n'; k++) ;
printf("\nInserisci la 2a stringa: ");
/* fflush(stdin);
scanf("%[^\n]", &v2); */
for(k=0; (v2[k]=getchar())!='\n'; k++) ;
unisci(v1, v2);
printf("\nLa stringa risultante e': %s", v1);
getch();
}
Ecco, il problema è che il programma, se non acquisisco le stringhe come ho fatto nel commento, cioè
/* fflush(stdin);
scanf("%[^\n]", &v1); */
Il programma non funziona correttamente...
Eppure la soluzione col for, l'avevo trovata sul libro di testo che abbiamo in dotazione... Qualcuno mi saprebbe spiegare il perché? :confused: