cldbaldini
28-11-2012, 16:23
Salve a tutti,
come potete vedere questo esercizio chiede di inserire un determinato numero di stringhe e di concatenarle. Il problema è che non ci sono errori di compilazione ma nell'esecuzione a volte restituisce la stringa concatenata correttamente, altre volte con numeri e/o simboli tra le stringhe e altre volte si blocca, il tutto varia (a quanto pare) in base alle stringhe che l'utente inserisce. Qualcuno sa dirmi il perché? Grazie
S.O.: Windows 7 Professional; Compilatore: Dev-C++ 4.9.9.2
#include <stdio.h>
#include <string.h>
#include <malloc.h>
const int LEN = 1000;
main(){
int N=0;
int i=0;
char buffer[LEN];
char *stringa;
stringa = (char *) malloc(sizeof(char));
*stringa = '\0';
while(N<=0){
printf("QUANTE STRINGHE VUOI INSERIRE? ");
scanf("%d", &N);
}
printf("\nINSERISCI LE STRINGHE:\n\n");
for(i=1;i<=N;i++)
{
*buffer='\0';
printf("STRINGA NUMERO %d: ",i);
scanf("%s", buffer);
stringa = realloc(stringa, (strlen(stringa) + strlen(buffer)));
stringa = strcat(stringa,buffer);
//printf("\n%s\n", stringa);
}
printf("\nSTRINGHE CONCATENATE: '%s'", stringa);
printf("\n\n");
system("PAUSE");
free(stringa);
}
come potete vedere questo esercizio chiede di inserire un determinato numero di stringhe e di concatenarle. Il problema è che non ci sono errori di compilazione ma nell'esecuzione a volte restituisce la stringa concatenata correttamente, altre volte con numeri e/o simboli tra le stringhe e altre volte si blocca, il tutto varia (a quanto pare) in base alle stringhe che l'utente inserisce. Qualcuno sa dirmi il perché? Grazie
S.O.: Windows 7 Professional; Compilatore: Dev-C++ 4.9.9.2
#include <stdio.h>
#include <string.h>
#include <malloc.h>
const int LEN = 1000;
main(){
int N=0;
int i=0;
char buffer[LEN];
char *stringa;
stringa = (char *) malloc(sizeof(char));
*stringa = '\0';
while(N<=0){
printf("QUANTE STRINGHE VUOI INSERIRE? ");
scanf("%d", &N);
}
printf("\nINSERISCI LE STRINGHE:\n\n");
for(i=1;i<=N;i++)
{
*buffer='\0';
printf("STRINGA NUMERO %d: ",i);
scanf("%s", buffer);
stringa = realloc(stringa, (strlen(stringa) + strlen(buffer)));
stringa = strcat(stringa,buffer);
//printf("\n%s\n", stringa);
}
printf("\nSTRINGHE CONCATENATE: '%s'", stringa);
printf("\n\n");
system("PAUSE");
free(stringa);
}