arkadaşlar şu programı yazdım büte çalışırken:

---

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define n 3
main()
{
char ad[25];
int i, j, a[n][n];

FILE *d;

printf("Kayit yapilacak dosya ismi: ");
scanf("%s", &ad);

printf("1. Matrisi Giriniz: \n");

for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("a[%d.%d]: ", i+1, j+1);
scanf("%d", &a[i][j]);
}

if((d=fopen(ad, "w"))==NULL) exit(1);

fprintf(d, "1. Matris: \n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
fprintf(d, "%d", &a[i][j]);
fprintf(d, "\n");
}
fclose(d);

printf("2. Matrisi Giriniz: \n");

for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("a[%d.%d]: ", i+1, j+1);
scanf("%d", &a[i][j]);
}

if((d=fopen(ad, "at"))==NULL) exit(1);

fprintf(d, "2. Matris: \n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
fprintf(d, "%d", &a[i][j]);
fprintf(d, "\n");
}
fclose(d);







}
---

yalnız programı çalıştırıyorum. 1-2-3-4 gibi rakamlar giriyorum fakat programın kaydettiği dosyaya baktığımda 223487762 gibi alt alta rakamlar çıkıyor yanlışım nerede?

teşekkürler

 

&a[i][j]

yerine

a[i][j]

kullanacaksın. adrese atama yapmıyorsun, bu yüzden doğrudan dizinin elemanını alıp yazdırıcaksın. o saçma sayılar da aslında adres değeri.

fprintf(d, "%d", a[i][j]);

ocanal

fprintf(d, "%d", &a[i][j]);
fprintf(d, "\n");

Yazdırırken sürekli bir satır alta geçiyorsun çünkü. O boşluk bırakma işini 1. for'un dışında yap bakalım ne değişecek :)

Vicy89

satır atlatmayı for dışına koyduğumda beklediğim gibi hepsini yanyana yazdı:
268668826866922686696268670026867042686708268671226867162686720

& sildim bu sefer a[1][1]: i soruyor giriyorum sonra program yanıt vermemeye başlıyor.

buny

@ocanal'ın dediği çözdü olayı ben yanlış yerde silmişim teşekkürler. :)

buny
1

mobil görünümden çık