Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
1257
Tıklama
0
Öne Çıkarma
C yardımı
:
15 yıl
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
15 yıl
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.
:
15 yıl
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.