Aşağıdaki programım var:
int main(int argc, char *argv[])
{
int a, b;
char c1, c2;
printf("Enter something: ");
scanf("%d",&a); // line 1
printf("Enter other something: ");
scanf("%d", &b); // line 2
printf("Enter a char: ");
scanf("%c",&c1); // line 3
printf("Enter another char: ");
scanf("%c", &c2); // line 4
printf("Done"); // line 5
system("PAUSE");
return 0;
}
C kitabında okuduğum gibi, yazar scanf()
arabellekte yeni bir satır karakteri bıraktığını, bu nedenle programın kullanıcının verileri girmesi için 4. satırda durmadığını, bunun yerine yeni satır karakterini c2'de sakladığını ve 5. satır.
Bu doğru mu?
Ancak, bu yalnızca char
veri türlerinde mi olur ? Çünkü int
veri türlerinde bu sorunu 1., 2., 3. satırlardaki gibi görmedim. Doğru mu?
fflush(stdin)
çağrılmadan önce kullanılabileceği önerilirscanf()
. Artıları ve eksileri ve bu yöntemin alternatifleri hakkında bir tartışma için lütfen Kullanmafflush(stdin)
bölümünü okuyun (bu, Windows'ta az çok çalışır ve diğer yerlerde işe yaramaz).