|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2004
Città: Modena
Messaggi: 96
|
[C] Acquisizione di stringhe...
Vi posto un programmino semplice che ho realizzato per concatenare due stringhe...
Codice:
#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è Codice:
/* fflush(stdin);
scanf("%[^\n]", &v1); */
Eppure la soluzione col for, l'avevo trovata sul libro di testo che abbiamo in dotazione... Qualcuno mi saprebbe spiegare il perché?
__________________
Webmaster a tempo perso |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 329
|
In C le stringhe terminano con uno 0 e facendo l'acquisizione in quel modo lo zero non viene inserito:
for(k=0; (v1[k]=getchar())!='\n'; k++) ; v1[k] = 0; prova così. Ciao |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7258
|
Quote:
è la stessa cosa, ma visto che è definito come "carattere terminatore" mi sembra più comprensibile |
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Aug 2004
Città: Modena
Messaggi: 96
|
Grazie
Effettivamente per un attimo ci avevo pensato, poi il sonno mi aveva cancellato quell'idea dalla testa Ma secondo voi, dei due qual è il miglior metodo di acquisizione? Cmq grazie mille delle risposte
__________________
Webmaster a tempo perso |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:04.




















