Strcat Sorunu
-
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();
} -
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.
-
Anladım davayı birader sağolasın.. :sel