1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Str.append em C

Discussão em 'Programação' iniciada por Yannick, 27 de Fevereiro de 2008. (Respostas: 9; Visualizações: 841)

  1. Yannick

    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;
    }
     
  2. Baderous

    Baderous Banido

    O que tu queres é fazer a função strcat que já está definida no string.h.
     
  3. m00s

    m00s Power Member

    mas se calhar o objectivo é contruir uma de raiz...
     
  4. rj.rodrigues

    rj.rodrigues Power Member

    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
     
  5. Yannick

    Yannick Power Member

    tenha de fazer essas alterações todas?
     
  6. Tyran

    Tyran Power Member

    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
     
  7. Yannick

    Yannick Power Member

    Tá resolvido...thx
     
  8. s e 7 e n

    s e 7 e n Power Member

    Xiih olha o trabalho de SMP...lool
     
    Última edição: 27 de Fevereiro de 2008
  9. Yannick

    Yannick Power Member

    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;
    }
     
  10. arconada

    arconada Power Member

    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: 27 de Fevereiro de 2008

Partilhar esta Página