İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Diziyi Tersten Yazdırma?

Kadima09.05.20138 cevap6.595 görüntüleme
#1
merhabalar. benim elimde bir metin belgesi (txt) var. ben bu metin belgesi içerisindeki her satırı tersten yazdırmak istiyorum.

#include<stdio.h>
#include<conio.h>

int main(){
    FILE *d;
    int i,n,gecici;
    d=fopen("User.txt","r");  //dosya okuma konumu 
    char ad[100];
    
    while(!feof(d)){
    
    fscanf(d,"%s",&ad);
    printf("%s\n",ad);}
    
    fclose(d);
    getch();
    return 0;}


bu dosyayı masaüstünden okuyup ekrana yazdırabiliyorum



ama tersten yazdırmayı yapamadım bir türlü :/

istediğim:
654321
54321
4321
321
21

yardımcı olabilecek? :)
Cevaplar
#2
while(!feof(d)){

fscanf(d,"%s",&ad);
for(i=len(ad);i>0;i--)
printf("%s",ad);

printf("\n");

}

Hocam yanlışım varsa mazur gör ancak olay şu; satırı zaten ad denen değişkene atıyorsun ya, while içerisinde bir for kurup (ya da yine bir while), bu satırdaki karakter sayısı kadar döndürüp, böylece tersten yazdırabilirsin. Ardından son printf ile de satır atlama var. Umarım mantığını anlatabilmişimdir.
Kadima Konuyu açan
#3
ugurturhal dedi: ↑
while(!feof(d)){

fscanf(d,"%s",&ad);
for(i=len(ad);i>0;i--)
printf("%s",ad);

printf("\n");

}

Hocam yanlışım varsa mazur gör ancak olay şu; satırı zaten ad denen değişkene atıyorsun ya, while içerisinde bir for kurup (ya da yine bir while), bu satırdaki karakter sayısı kadar döndürüp, böylece tersten yazdırabilirsin. Ardından son printf ile de satır atlama var. Umarım mantığını anlatabilmişimdir.
strlen ile boyutu buluyoruz anladım onu ama yazdırma kısmında diziyi ad şeklinde yazıp çalıştırınca boş ekran çıkıyor ve hata verip kapanıyor :/
#4
S.a

Sevgili kardeşim sorununu çözdüm sanırım. Problem printf("%s") kullanmandan kaynaklanıyordu. %c yapınca sorun düzeldi. Ayrıca strlen komutu için string.h kütüphanesini de eklemen gerekiyor. İlgili kod aşağıda, umarım geç kalmamışımdır :)

#include<stdio.h>
#include<conio.h>
#include<string.h>

int main(){
 FILE *d;
 d = fopen("a.txt","r");
 char ad[100];

 while(!feof(d)){
   fscanf(d,"%s",&ad);
   int boy = strlen(ad);

   while(boy>0){
      printf("%c",ad[boy-1]);
      boy--;
   }
   
   printf("\n");
 }
 
 fclose(d);
 getch();
 return 0;
}


Proje dosyasını buradan indirebilirsin. http://www.mediafire.com/download.php?76hcg2ha79blhf7

Çıktı da burada;
Kadima Konuyu açan
#5
ugurturhal teşekkürler :)
peki bu ters diziyi bir metin belgesine yazdırmak istersem nasıl yapacağım?
#6
Rica ederim, C diline hakim değilim ancak bir araştırmayla şunu buldum, umarım işinize yarar;

FILE *fp;
fp = fopen(“yenidosya.txt”,”w”); // Burada yazacağımız dosyayı açıyoruz (en yukarıda okumak için açtığımız dosyayla beraber bunu tanımlıyoruz).

ardından şu değişikliği yaptığınızda sanırım olacaktır. Hatta hemen deneyip güncel halini de aktaracağım size:)

while(boy>0){
fprintf(fp,"%c",ad[boy-1]);
boy--;
}

fprintf(fd,"\n");

- - - Mesaj Güncellendi - - -

Evet kodu denedim, tam da dediğim gibi çalışıyor. Ayrıca farkettim ki size yollamış olduğum kod normalde çalışmamakta. Şu anda tüm sistemin güncel halini tekrardan gönderiyorum. Program zaten belli. a.txt den okuduğu veriyi ters çevirip yeni.txt ye yazmakta. Umarım işinize yarar.

Selametle...

İlgili dosya linkte; http://www.mediafire.com/download.php?76hcg2ha79blhf7
Kadima Konuyu açan
#7
ugurturhal dedi: ↑
Rica ederim, C diline hakim değilim ancak bir araştırmayla şunu buldum, umarım işinize yarar;

FILE *fp;
fp = fopen(“yenidosya.txt”,”w”); // Burada yazacağımız dosyayı açıyoruz (en yukarıda okumak için açtığımız dosyayla beraber bunu tanımlıyoruz).

ardından şu değişikliği yaptığınızda sanırım olacaktır. Hatta hemen deneyip güncel halini de aktaracağım size:)

while(boy>0){
fprintf(fp,"%c",ad[boy-1]);
boy--;
}

fprintf(fd,"\n");

- - - Mesaj Güncellendi - - -

Evet kodu denedim, tam da dediğim gibi çalışıyor. Ayrıca farkettim ki size yollamış olduğum kod normalde çalışmamakta. Şu anda tüm sistemin güncel halini tekrardan gönderiyorum. Program zaten belli. a.txt den okuduğu veriyi ters çevirip yeni.txt ye yazmakta. Umarım işinize yarar.

Selametle...

İlgili dosya linkte; http://www.mediafire.com/download.php?76hcg2ha79blhf7
işimi gördü hocam çok teşekkür ederim :)
#8
Şu başlığı her okuduğumda Cem Yılmaz'ın Sübhanekeyi tersten okuma esprisi geliyor :)
#9
beyler bişiler sorcam baya eski konu ama yardıma ihtiyacım var bu yaptığınız program yazma işlemi yapmıyor.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.