|
|
|
![]() |
|
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: 05:33.