C'de Değişkenlerle Ve Dosyalamayla İlgili Problem
-
------------------------------
#include<stdio.h>
#include<locale>
FILE *cfPtr;
char TCNo[11];
char ad[20];
char soyad[20];
char odaNo[10];
char tarih[11];
int giris=0;
int main()
{
setlocale(LC_ALL,"TURKISH");
while((giris!=5))
{
printf(" MENÜ\n----------------\n[1]Kayıt ekle\n[2]Kayıt düzenle\n[3]Kayıt sil\n[4]Kayıt bul\n[5]Çıkış\n");
scanf_s("%d",&giris);
if(giris==5)
{
break;
}
else if(giris==1)
{
}
else if(giris==2)
{
}
else if(giris==3)
{
}
else if(giris==4)
{
}
else
printf("Yanlış giriş");
}
}--------------------------------
Şu şekilde iskeleti çıkardım,seçeneklere yapılacak işlemleride koyucam ama şöyle bi sıkıntım var, kalın yazılan TCNo değişkeni 11 haneli TC kimlik numarasını alıcak,ancak int 10 haneye kadar desteklediği için sorun çıkıyo. char olarak tanımladım olmadı,long dedim olmadı,long int ve unsigned long int denedim olmadı.Nasıl yapıcam bunu?
Örnek kayıt denemesi yaptığım kodlarda bunlar;
-----------------------
#include<stdio.h>
#include<locale>
int main()
{
long int hesap;
char isim[30];
double bakiye;
FILE *cfPtr;
setlocale(LC_ALL,"TURKISH");
if((cfPtr = fopen("hastalistesi.dat","w"))==NULL)
printf("Dosya açılamadı\n");
else
{
printf("Hesap numarası, isim, bakiye\n?\n");
scanf("%d%s%lf",&hesap,&isim,&bakiye);
while(!feof(stdin))
{
fprintf(cfPtr, "%d %s %.2f\n",hesap,isim,bakiye);
printf("? ");
scanf("%l%s%lf",&hesap,&isim,&bakiye);
}
fclose(cfPtr);
}
return 0;
}----------------------
-
Diğer her şeyi char olarak tanımladığında sıkıntı yoksa, bunda da problem olmaması lazım. Ne hatası veriyor?
-
JPriest bunu yazdı:
-----------------------------
Diğer her şeyi char olarak tanımladığında sıkıntı yoksa, bunda da problem olmaması lazım. Ne hatası veriyor?
-----------------------------Şimdi diğer değişkenleride char olarak tanımlayıp denedim oldu. Ayrıca şu c'nin scanf fonksiyonunun specifierleri yüzünden sıkıntı olmuş %s yerine %d yazılı kalmış. Bu şekilde ben kayıt işlemini çözdüm,peki bunu tamsayı olarak nasıl okuturuz?
-
pointer denesen olmaz mı ?
-
wasd bunu yazdı:
-----------------------------Şimdi diğer değişkenleride char olarak tanımlayıp denedim oldu. Ayrıca şu c'nin scanf fonksiyonunun specifierleri yüzünden sıkıntı olmuş %s yerine %d yazılı kalmış. Bu şekilde ben kayıt işlemini çözdüm,peki bunu tamsayı olarak nasıl okuturuz?
-----------------------------TCno 'yu string halinde diziye alırsın. daha sonra da atoi ile integer'a çevirirsin.
-
Long int olabilir. Unsigned tanımla bir de
-
eğer doğru anladıysam şöyle bir çözüm olabilir
char Tc[11];
int Tci[11];
for(i=0;i<=10;i++)
{Tci[i]=Tc[i]-48;
}
şeklinde yazarsan Tci dizisine sayi olarak aktarmis olursun ama işine yararmı bilmiyorum
-
String olarak al hocam. Tamsayi olarak da istedigin haneye kadar cikarsin ama T.C. kimlik diyorsun,
char tcno[12];
scanf("%s",tcno);
