Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
2
Cevap
1383
Tıklama
0
Öne Çıkarma
C yardımı
:
16 yıl (849 mesaj)
Yüzbaşı
Konu Sahibi

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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



B
16 yıl (6037 mesaj)
Yarbay

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 >
Bu mesaja 1 cevap geldi.
:
16 yıl (849 mesaj)
Yüzbaşı
Konu Sahibi

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 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.