Strcat Sorunu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DeliDumrul
    DeliDumrul's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    Arkadaşlar <string.h>'da bulunan strcat fonksiyonunu kendim yazmaya çalışıyorum. Ancak while döngüsüyle programı yazdığım zaman çalıştırabiliyorum. for ile çalıştıramıyorum..For döngüsünde nerde hata var, anlayamadım?

    For döngüsüyle olan;

     

    /* Bir stringi diğer string'in sonuna kopyalar */
    #include <stdio.h>

    #include <string.h>
    char *strin_cat(char *s1, char *s2)
    {
    char *temp = s1;  
    int k,n;  
       for(k=0; s1[k] != '\0'; ++k)
       ;
    for(n=0; s1[k] = s2[n] != '\0'; ++n)
    k++;
      
    return temp;
    }

    void main()
    {
        char isim1[20], isim2[13];
        puts("s1:?");
        gets(isim1);
        fflush(stdin);
        gets(isim2);
        strin_cat(isim1, isim2);
       printf("Kopyalanmis string: %s",  isim1);
       getchar();
      
    }
    /*Pointerlar ne zaman [n] operatörüyle kullanılabilir.*/

     

    Bu çalışmıyor..

    Çalışan :

    /* Bir stringi diğer string'in sonuna kopyalar */
    #include <stdio.h>

    #include <string.h>
    char *strin_cat(char *s1, char *s2)
    {
    char *temp = s1;  
    int k=0,n=0;  
       while(s1[k] != '\0')
       ++k;
       while ((s1[k] = s2[n]) != '\0')
       {
       k++;
       n++;
       }
      
    return temp;
    }

    void main()
    {
        char isim1[20], isim2[13];
        puts("s1:?");
        gets(isim1);
        fflush(stdin);
        gets(isim2);
        strin_cat(isim1, isim2);
       printf("Kopyalanmis string: %s",  isim1);
       getchar();
      
    }


    Dünya gözümde kerbeladır.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    Kardesim kodlarda filan hata yok aslinda sorun yok sadece ufak bir ayrintiyi gozden kacirmissin.

     

     

    for(n=0;((s1[k] = s2[n]) != '\0');++n)
    k++;

     

     

    buraya bakarsan  parantezler koydum

    sen for lu dongude olan yeri   

    for(n=0;s1[k] = s2[n] != '\0';++n)    şeklinde yapinca  s1[k] = s2[n] != '\0'  gibi 3 tane compare cikmis buda hataya sebebiyet vermis :)

     

    for dongusunun icini iste dedigim gibi parantezlere alirsan hatta zaten dha onceden while da yapmissin bunda dalginligana gelmis sadece..neyse iyi calismalar kardesim. 

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DeliDumrul
    DeliDumrul's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek
    Anladım davayı birader sağolasın.. :sel

    Dünya gözümde kerbeladır.
Toplam Hit: 1853 Toplam Mesaj: 3