Şimdi Ara

C yardımı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
3
Cevap
0
Favori
1.131
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba.
    C dilinde bana bir dosyadan(txt) okuma yaparken bunu belirli ayraçlara göre diziye aktaracak bir kod lazım ancak amatör olduğum için tam olarak idrak edemedim durumu. Flowchart kafamda ancak gerekli kodları internetten araştırmak cidden bela.

    Örneğin 5e5lik bir 2 boyutlu dizi içerisine:
    x x x x x
    x x x x x
    x x x x x
    x x x x x
    x x x x x
    şeklinde içeriğe sahip bir txt dosyasını aktaracağım. Her boşluk(Space) için sağdaki boyut bir artarken satırbaşı(Enter) gördüğünde soldaki boyutu bir artıran ve bu şekilde devam eden bir döngüye ihtiyacım var. Aklımdaki döngü şu şekilde ancak buradan bir syntax hatası alacağımdan eminim.

    #include <stdio.h>

    int main()
    {
    float notlar[6][10];
    FILE *cfPtr;
    int j=0

    if((cfPtr=fopen("notlar.txt","r"))== NULL)
    {
    printf("Dosya açılamadı"\n");
    }
    else
    {
    while(!feof(cfPtr))
    {
    if(cfPtr=="\n") {j=j++;}
    fscanf(cfPtr, "%d%d%d%d%d%d", notlar[1][j],notlar[2][j],notlar[3][j],notlar[4][j],notlar[5][j],notlar[6][j]);
    }
    }
    Bu şekilde bir örnek üzerinden uyarlama yaparak yapabileceğimi düşündüm. Ancak fscanf fonksiyonunun boşluğu ve satırbaşını ayraç olarak kabul ettiğini varsayarak kullandım bunları. Örnekte dosyalar .dat dosyasından okunuyordu, bunun bir fark yaratabileceğini düşünüyorum. Bu kısımdan sonrası oldukça basit. Tek mesele dosyayı uygun formatta dizi üzerine aktarabilmek. Şimdiden teşekkür ediyorum.







  • j=j++ nedir yahu? bunun disinda cfPtr bir pointer yani if'de o sekilde kullanamazsin.

    alttaki kod isini gorur, 5*5 disinda bir dizi icin fscanf satirinada ekleme yapman gerekecek.

     
    #include <stdio.h>
    #include <stdlib.h>

    #define SATIR 5
    #define SUTUN 5

    int main( void )
    {
    FILE *dosyaPTR;
    int satir = 0, sayac1, sayac2;
    int dizi[SATIR][SUTUN] ={{0}};

    if( ( dosyaPTR = fopen( "notlar.txt", "r" ) ) == NULL )
    {
    printf( "Dosya Bulunamadi!\n" );
    exit(1);
    }

    while( !feof( dosyaPTR ) )
    {
    fscanf( dosyaPTR, "%d%d%d%d%d", &dizi[satir][0], &dizi[satir][1], &dizi[satir][2], &dizi[satir][3], &dizi[satir][4] ); /* Burasi degistirilecek */
    ++satir;
    }


    fclose(dosyaPTR);

    /* Dizin icerigi yazdiriliyor */

    for ( sayac1 = 0; sayac1 < satir; sayac1++ )
    {
    for( sayac2 = 0; sayac2 < SUTUN; sayac2++ )
    printf( "%4d\t", dizi[sayac1][sayac2] );
    putchar('\n');
    }

    system( "PAUSE" );
    return 0;
    }




    < Bu mesaj bu kişi tarafından değiştirildi BenGiDeR -- 30 Eylül 2010; 23:27:32 >




  • j=j++ boşluğuma denk gelmiş:D
    Teşekkürler



    < Bu mesaj bu kişi tarafından değiştirildi :DHoroHoro:D -- 4 Ekim 2010; 21:37:18 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.