Str.append em C

Yannick

Power Member
Olá, eu tenho um código deste género e queria que o resultado do append desse correcto mas não sei o que alterar...alguém me consegue ajudar?

------------------------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>

char* append (char s1[ ], char s2[ ]) {
int s1len = strlen (s1);
int s2len = strlen (s2);
int k;
for (k=0; k<s2len; k++) {
s1[k+s1len] = s2[k];
}
return s1;
}

int main ( ) {
char str1[10];
char str2[10];
while (1) {
printf ("str1 = ");
if (!gets (str1)) {
return 0;
};
printf ("str2 = ");
if (!gets (str2)) {
return 0;
};
printf ("The result of appending str2 to str1 is %s.\n",
append (str1, str2));
}
return 0;
}
 
Código:
char* append (char s1[ ], char s2[ ]) {
int f=0;
int i=0;
while(s1[f]!='\0'){
   f++;
}
while(s2[i]!='\0'){
  s1[f]=s2[i];
  f++;
  i++;
}
s1[i]='\0';
return s1;
}


Ou seja, procuras pelo fim da string, e copias ate aao fim da 2 string.
Não compilei, pode ter erros
 
Que tal algo deste género?

tamInic = strlen( primeira); //passa o tamanho inicial da string que vai ser aumentada

for ( i=0; segunda[ i ] != '\0'; i++) {
primeira[ tamInic + i] = segunda[ i]; //se usada strlen em vez de tamInic+i resultaria mas seria menos eficiente
}

primeira[ tamInic + i] = '\0'; //caracter terminador de string

Cumpzz
 
Já tentei mudar algumas coisas no codigo e nao consigo saber pk e k no final a media continua a dar 0...
--------------------------------------------------------------------------------------------
#include <stdio.h>

/*
Read a set of values from the user.
Store the sum in the sum variable and return the number of values read.
*/
int read_values(double sum)
{
int values=0,input=0;
sum = 0;
printf("Enter input values (enter 0 to finish):\n");
scanf("%d",&input);
while(input != 0) {
values++;
sum += input;
scanf("%d",&input);
}
return values;
}

int main()
{
double sum=0;
int values;
values = read_values(sum);
printf("Average: %g\n",sum/values);
return 0;
}
 
isso deve se ao facto de SUM estar a ser 0 quando vai fazer a conta... se colocares dois printfs atrás do printf que tens agora ves isso (debbug à la pata)

Código:
#include <stdio.h>

double read_values(double sum)
{
 int values=0,input=0;
sum = 0;
printf("Enter input values (enter 0 to finish):\n");
scanf("%d",&input);
while(input != 0) {
values++;
sum += input;
scanf("%d",&input);
}

return (sum/values);
}

int main()
{
double sum;
double media;
media = read_values(sum);
printf("Average: %g\n", media);
getchar();
getchar();
return 1;
}


Porque nao assim?
 
Última edição:
Back
Topo