Şimdi Ara

C de Dosyadan Veri Okuma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
16
Cevap
1
Favori
26.086
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Şimdi bizim bir dosyamız var diyelim bu dosyada bir satırında ad soyad ve yaş bilgisi olsun diyelim bunu structla yapıyoruz ancak dosyayı doğru bir şekilde satır satır nasıl okuyabilirim?
    örneğin dosyanın bir satırında;
    ali aksoy 25
    burada ali aksoy bir diziye 25 de bir değişkene aktarılması gerekiyor bunu nasıl yapabilirim



  • #include<stdio.h> 
    #include<string.h>
    #include<stdlib.h>
    #define N 25

    struct telInfo{
    char firstName[12];
    char lastName[12];
    int yas;
    };

    int main ()
    {
    struct telInfo allSubscriber[N];
    FILE *dosya;
    dosya = fopen("c:\\telephone.txt","r" );
    while( fscanf(dosya," %s %s %s %d ",allSubscriber[i].firstName,allSubscriber[i].lastName,&allSubscriber[i].yas)!=EOF)
    {

    }
    fclose(dosya);
    }


    bir arkadaş için yazdığım kodu sana uyarladım
    dosya adresini kendine göre ayarla bide aklında bulunsun dosyadan string okurken fscanf içinde string ismini & le başlatma yanlış okur
  • fscanf fonksiyonunu kullanıcaksn işte fscanf(myfile,"%s %s %d",name,surname,&age);
  • Eğer struct'la yapıyorsan, ki isabetli bir yöntemdir, bu işin yolu bu değildir.

    int fd = open("/hede/hodo/file.dat", O_RDONLY);
    struct stat st;
    fstat(fd, &st);

    int kayit, kayit_sayisi = st.st_size / sizeof(struct sahis_t);

    struct sahis_t sahislar[kayit_sayisi];

    for (kayit = 0; kayit < kayit_sayisi; kayit++) {
    read(fd, sahislar[kayit], sizeof(struct sahis_t));
    }

    close(fd); // Eger isiniz bittiyse..

    N nolu (ilk vatandas 0 'dan başlamak kaydıyla) şahsı okumak icin:

    lseek(fd, sizeof(strcut sahis_t) * N, SEEK_SET);
    read(fd, sahislar[N], sizeof(struct sahis_t));

    şahsın bir bilgisi değişince güncellemek için:

    lseek(fd, sizeof(strcut sahis_t) * N, SEEK_SET);
    write(fd, sahislar[N], sizeof(struct sahis_t));

    Bu fonksiyonların detaylarını ilgili man. sayfalarında vs. bulabilirsiniz. Bu, dosya erişimi için daha verimli ve sorunları daha az olan yöntemdir. Buffered I/O bu gibi işlerde makinenin sırtına yük olmaktan başka bir şey değildir.




  • İyi günler

    benimde bir sorum var ve umarım yardımcı olursunuz,

    elimde sample.xyz adlı bir dosya var ve dosya içindeki veriler aşağıdaki şekilde

    "nokta numarası" "X koordinatı" "Y koordinatı" "Z koordinatı" şeklinde
    1 -15 30 12
    2 0 35 65
    3 125 48 81
    4 1 62 122

    öncelikle dosyayı açmam gerekli ve sonrasında nokta numarası elle girmeliyim, ve dosyadan nokta numarasını okumam ve ilişkte olan x y ve z koordinatlarınıda bir diğer değişkene atamak istiyorum ve böylece hesap yapabilirim mesela iki eğrinin kesişim noktası gibi.

    sonrasında kesişim noktasının koordinatlarını bulduğumda bu koordinatları yazdırmak istiyorum ve bunun içinde nokta numara girmeliyim.

    2 haftadır uğraşmaktayım fakat filelar hakkında hiç bir bilgiye sahib değilim , yardımlarınız için şimdiden teşekkürler

    iyi akşamlar
  • quote:

    Orijinalden alıntı: zoidac

    İyi günler

    benimde bir sorum var ve umarım yardımcı olursunuz,

    elimde sample.xyz adlı bir dosya var ve dosya içindeki veriler aşağıdaki şekilde

    "nokta numarası" "X koordinatı" "Y koordinatı" "Z koordinatı" şeklinde
    1 -15 30 12
    2 0 35 65
    3 125 48 81
    4 1 62 122

    öncelikle dosyayı açmam gerekli ve sonrasında nokta numarası elle girmeliyim, ve dosyadan nokta numarasını okumam ve ilişkte olan x y ve z koordinatlarınıda bir diğer değişkene atamak istiyorum ve böylece hesap yapabilirim mesela iki eğrinin kesişim noktası gibi.

    sonrasında kesişim noktasının koordinatlarını bulduğumda bu koordinatları yazdırmak istiyorum ve bunun içinde nokta numara girmeliyim.

    2 haftadır uğraşmaktayım fakat filelar hakkında hiç bir bilgiye sahib değilim , yardımlarınız için şimdiden teşekkürler

    iyi akşamlar

    "c file operations" diye ararsan birçok kaynak bulabilirsin.
    Aşağıdaki programı derledikten sonra programın bulunduğu klasör içine sample.xyz adlı bir dosya yarat (eğer .xyz uzantısı yerine başka bişey kullanırsan programın kaynak kodu içinde de değiştirmelisin) ve içine verdiğin örneği yapıştır. Programı çalıştırdığın zaman dosyadaki her sayıyı ekrana alt alta yazıcaktır. Burada her sayıyı bir array içine yerleştirmiş olduk. Arrayin 0, 4, 8, 12, 16, ... elemanları nokta numarasına karşılık geliyor.
    Burada arrayin size ına dikkat etmelisin. Dosyada bulunan sayı sayısı array size ını aşmamalı ve arrayi kullanırken dosyadan aldığın son sayının arrayin kaçıncı bölmesinde olduğuna dikkat etmelisin.

     
    #include <stdio.h>

    int main()
    {
    FILE *f;
    int a[32], i = 0, j = 0;

    f = fopen("sample.xyz", "r");

    while(!feof(f))
    fscanf(f, "%d", &a[i++]);

    while (j < i)
    printf("%d\n", a[j++]);
    fclose(f);

    getchar();
    return 0;
    }




  • Ya uzerinden cok vakit gecmis ama bu sese kulak verirseniz cok yardimci olursunuz benim dosyamin icinde sayilar var ben bunlari diziye aktarmam istiyorum????

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: umut_n95

    Ya uzerinden cok vakit gecmis ama bu sese kulak verirseniz cok yardimci olursunuz benim dosyamin icinde sayilar var ben bunlari diziye aktarmam istiyorum????

    Basit bir mantık ile şu şekilde yapabilirsin. (Text dosyasında bir tek sayı olduğunu farz ediyorum.)
     
    #include <stdio.h>
    #define CONSTANT_NUMBER 50

    int main(){
    FILE *dosya;
    double arr[CONSTANT_NUMBER]; // kac sayilik array istiyorsan ona göre ayarla
    int status,i=0,counter=0;
    dosya=fopen("dosya.txt","r");
    if(dosya == NULL)
    perror("File Not Found ");
    else {
    status = fscanf(dosya,"%d",&arr[i]);
    while( status != EOF){
    counter++;
    i++;
    status = fscanf(dosya,"%d",&arr[i]);
    }
    for(i=0; i<counter; i++)
    printf("%d\n",arr[i]);
    fclose(dosya);
    }
    return 0;
    }




    < Bu mesaj bu kişi tarafından değiştirildi Uisge Beatha -- 22 Aralık 2013; 15:09:35 >




  • Usta eline koluna saglik ama anlamamissin beni benim dosyam sayilar var yani 6791672 786 65 gibi ben bu sayilar diziye attim. Ama bu sayilar diziye attim fakat bosluktakileride diziye atiyi ben onlari atmamasini istiyorum anlatabildim mi

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: umut_n95

    Usta eline koluna saglik ama anlamamissin beni benim dosyam sayilar var yani 6791672 786 65 gibi ben bu sayilar diziye attim. Ama bu sayilar diziye attim fakat bosluktakileride diziye atiyi ben onlari atmamasini istiyorum anlatabildim mi

    Bosluktakileri diziye atıyo derken?

    Eğer üstteki dediğini texte yazarsan 3 değer alır array.

    arr[0]=6791672
    arr[1]=786
    arr[2]=65

    olur.
  • En bastan anlaticam. Simdi benim dosyam var bu dosyanin icinde sayilar harfler karakterler ne ararsan var ben bunlarin icinden sayilari alip bi diziye atmam lazim amac bu dosyadaki sayilari sirasiyla 5 tanesi alip 6. Taban yapip 7. Ise 7. Sayinin tabanina cevirecek bu dosyanin icinde ne kadar sayi varsa bu islemi yapacak benim sikintim bu bosluklari kestiremedigim icin yapamiyorum anlatabildimmi simdiden cok tesek ederim

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • eger sayılar atıyorum 1234"bosluk"3452 ise strtok fonksiyonu ile ayırabilirsin ikisini ayrı sekilde
  • Yani sayilar arasinda belli bi bosluk yok 2 tane sayi yazilip 3 tane boslujta olabilir4 tane sayi olup 5 tane boslukta olbilir

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • merhaba arkadaşlar. bende dosya var adı sayılar.txt örneğin. bu sayılarda değerler var aynen söyle;
    1 2 3 4
    2 0 2 3
    1 2 4 3
    4 3 3 0 gibi. .

    ben bu sayıları bir diziye atmak istyrm bunu nasıl yapacağım ? ve bunlar sayı değilde kelime olsa idi nasıl yapacaktım bunu ? bunlarda işlem yapacağım ben dizi yerine matris olması lazım yani matris[][] gibi yardım eder misiniz ?
  • Merhaba elimde sehir1-sehir2-mesafe formatında bir txt dosyası var. Bu txt dosyasından sehir1 ile sehir2 yi bir matrise mesafeyi de bir diziye almak istiyorum nasıl yapabilirim.

    sehir1-sehir2-mesafe
    sehir1-sehir3-mesafe
    sehir1-sehir4-mesafe
    ...

    diye gidiyor



    < Bu mesaj bu kişi tarafından değiştirildi Guest-F31FE8CB4 -- 8 Mart 2017; 14:50:43 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.