[Çözüldü] Strlen Fonksiyonu Sorunu

Başlatan SirGre, 20 Aralık 2015 - 22:21:10

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

SirGre

Şu şekilde yaptığımda çıktı alabiliyorum ;

#include <stdio.h>
#include <string.h>
int main()
{
char ad[]="Merhaba";
int uzunluk=strlen(ad);
printf("%d kadar uzun ismin.\n",uzunluk);


Fakat şu şekilde yaptığım zaman ;
#include <stdio.h>
#include <string.h>
int main ()
{
char ad[10];
printf ("Lütfen karakter giriniz > ");
scanf("%s",&ad);
printf("Girilen karakter uzunluğu > %d ",strlen(ad));
}



Şu hatayı alıyorum ;
strlen02.c: In function 'main':
strlen02.c:7:1: warning: format '%s' expects argument of type 'char *', but argument 2 has type 'char (*)[10]' [-Wformat=]
scanf("%s",&ad);
^
strlen02.c:8:1: warning: format '%d' expects argument of type 'int', but argument 2 has type 'size_t' [-Wformat=]
printf("Girilen karakter uzunluğu > %d ",strlen(ad));
^

alquirel

Hatırladığım kadarıyla işaretçi (pointer) tipindeki değişkenler için scanf fonksiyonuyla değer atanırken & sembolünü kullanmıyorduk.

Yani:


scanf("%s", ad);


Olması lazım.

Reverser

#2
scanf("%s",&ad);
şu şekilde olmalı
scanf("%s",ad);
bunun nedeni ise şu; "%s" girildiğinde scanf() fonksiyonu char arrayinin ilk elementine pointer bekliyor.
"ad" bir array olduğu için zaten bir pointer olarak değerlendirilebilir. İşte bu nedenle direkt olarak "&ad" yerine "ad" yazabilirsin. Bu durumda "ad"'a eklenecek "&" operatörü scanf() fonksiyonun char * beklemesine sebep olacağı için bu hatayı alırsın.
ek olarak lütfen şu konuyu incele: [1] kodetiketi 

XFCE ROCKS !
Powered by Thunar & XFWM4



Sh4oTT

Bende 2 kodda sorunsuz calıstı.

Reverser

@ShaoDownLiNuP, GCC versiyon farklılığından dolayı olabilir ama doğrusu bir önceki mesajımda anlatıldığı gibi.

XFCE ROCKS !
Powered by Thunar & XFWM4



Sh4oTT

Dogrusunu ogrenmiş olduk konuyu acan arkadasımız  ve sızlerın sayesınde tesekkur ederız :)

SirGre

Cevaplarınız ve ilginiz için teşekkür ederim :)

tlg