mmm... ora non mi funziona più il programma... vi posto un po' il codice..
MAIN.C
Codice:
# include "header.h"
int main() {
char var[] ="questa stringa e' lunga 26";
printf("\n%s\nstrlen=%d\n",var,strlen(var));
printf("questa e' la stringa 1:\n\n%s\n\n Questa e il duplicato:\n\n%s\n\n",var,strdup(var));
printf("ciao + tutti -> %s",strcat("ciao","tutti"));
system("PAUSE");
}
header.h
Codice:
# include <stdlib.h>
# include <stdio.h>
//# define EOS '\0'
int strlen(char*);
char* strdup(char*);
char* strcat(char*,char*);
//char* strdelchar(char*, char);
lib.c
Codice:
# include "header.h"
int strlen(char *stringa)
{
int i=0;
for (i=0; stringa[i]!= '\0' ;i++)
;
return i;
}
char* strdup(char *stringa)
{
char *nuova;
int i;
nuova=(char*)malloc(strlen(stringa)+1);
if (nuova==0)
{
printf("\nErrore di allocazione. Stringa non duplicata\n");
return;
}
for (i=0;i<(strlen(stringa)+1);i++)
{
nuova[i]=stringa[i];
}
return nuova;
}
char* strcat(char *stringa1,char *stringa2)
{
int j=0, i;
char *str3;
str3 = (char*) malloc (strlen(stringa1)+strlen(stringa2)+1);
if (str3==0)
{
printf("\nErrore di allocazione. Stringa non duplicata\n");
return;
}
for (i=0;stringa1[i]!='\0';i++)
{
str3[j]=stringa1[i];
j++;
}
for (i=0;stringa2[i]!='\0';i++)
{
str3[j]=stringa2[i];
j++;
}
str3[j]='\0';
return str3;
}
Quando lo eseguo si pianta prima di eseguire strcar, e nel debug mi da: errore d'accesso: errore di segmentazione.
PS. per far uscire la funzione senza restituire niente?? basta return;??