[]
c hakkında bir soru - program içerde
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
---
#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]);
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 (11.06.13 21:10:32 ~ 21:12:30)
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 :)
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 (11.06.13 21:10:34)
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.
268668826866922686696268670026867042686708268671226867162686720
& sildim bu sefer a[1][1]: i soruyor giriyorum sonra program yanıt vermemeye başlıyor.
- buny (11.06.13 21:14:40)
@ocanal'ın dediği çözdü olayı ben yanlış yerde silmişim teşekkürler. :)
- buny (11.06.13 21:18:04)
1