Şimdi Ara

Input.txt dosyasından veri okuma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
9
Cevap
0
Favori
2.255
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar aşağıdaki gibi bi input.txt dosyası var elimde. C'de fscanf ile bu verileri ayrı ayrı isim serial, fiyat, tür gibisinden nasıl alıp ayırıcam?

    123,25,Terminator,Action,James Cameron,Hired;
    456,15,Return of the Jedi,Fantastic,Geroge Lucas,Inv;
    100,50,Shooter,Action,Antoine Fuqua,Hired;
    210,45,The Ugly Truth,Comedy,Robert Luketic,Inv;
    857,20,Law Abiding Citizen,Crime,F. Gary Gray,Inv;
    153,35,The Terminal,Comedy,Steven Spielberg,Hired;



  • toplu halde struct yapısını okumak istiyorsan fread kullanabilirsin.
  • rsybdtu dtu ldtu8



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 18:55:32 >
  • hayır hocam fscanf şart değil. Bunu okuyabileceğim en iyi şey nedir bilmiyorum. Sizin tavsiyeniz nedir?
  • i9/lfvsryjsr j



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 18:56:49 >
  • çok sağolun hocam. fscanf için yazdığınız kodu denedim de hocam program durduruluyor acaba hata mı yapmışım? bi de ben bu input dosyasını exe dosyasının yanına atıyorum. input.txt'den alıp output.txt diye boş bi dosyaya yazmak istiyorum fakat ona yazmıyor kendisi proje main.c nin olduğu yere yeni bi input.txt oluşturup ona yazıyor. Nasıl yapabilirm?
  • bu sanirim isini gorur:

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

    const char filename[] = "input.txt";
    int line_count() {
    char line[300];
    //Read the file */
    FILE *file = fopen(filename, "r");
    int counter = 0;
    while(fgets(line, 300, file) != NULL) {//Count the each line
    counter++;
    }
    fclose(file);//Close the file read
    return counter;
    }


    int file_handle(char (*each_line)[300]) {
    int line_counter = line_count();
    char mov_serial[line_counter][10];
    char mov_cost[line_counter][20];
    char mov_name[line_counter][100];
    char mov_genre[line_counter][30];
    char mov_dir[line_counter][50];
    char mov_st[line_counter][10];
    for (int i = 0; i < line_counter; i++) {
    char * pch;
    pch = strtok (each_line[i],",");
    int j = 0;
    while (pch != NULL){
    if (j == 0) {
    strcpy(mov_serial[i], pch);
    }
    else if ( j == 1) {
    strcpy(mov_cost[i], pch);
    }
    else if ( j == 2) {
    strcpy(mov_name[i], pch);
    }
    else if ( j == 3) {
    strcpy(mov_genre[i], pch);
    }
    else if ( j == 4) {
    strcpy(mov_dir[i], pch);
    }
    else if ( j == 5) {
    strcpy(mov_st[i], pch);
    }
    pch = strtok (NULL, ",");
    j++;
    }
    }

    for (int i = 0; i < line_count(); i++) {
    printf("Movie names are %s\n", mov_name[i]);
    }
    return 0;
    }

    int main () {
    FILE *file = fopen(filename, "r");//Create the file structure
    char line[300];
    fopen(filename, "r");//Start reading the file
    char each_line[line_count()][300];//An array with the length of TXT file
    int line_counter = 0;
    //This loop stores the CSV file into an array of string,
    while(fgets(line, 300, file) != NULL) {
    //Scan each line and copy it to each string array.
    sscanf (line, "%[^\n]\n", each_line[line_counter]);
    if(each_line[line_counter][0] == '#') {//Skip commentings in TXT file
    each_line[line_counter][0] = 0 ;//Rewrite on commentings
    line_counter--;
    }
    line_counter++;
    }
    fclose(file); //Close the file read
    file_handle(each_line);
    return 0;
    }


    Baska dosyaya yazma isini anlamadim ben, eger direkt icerigi kopyalayacaksan neden verileri ayiriyorsun ki?



    < Bu mesaj bu kişi tarafından değiştirildi ThisisaNightmare -- 9 Ocak 2013; 14:45:51 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • valla hocanın dediğine göre inputta değişiklik yapmayacağız tüm değişiklikleri yapıp outputa yazacağız ve input aynı kalacakmış. bi de argv, argc den bahsediyolar onların ne olduğunu hiç bilmiyorum. sanırım onlarla ilgili bişey. bi de bu verdiğiniz kodu çalıştırdım hiç bişey yazmadan program bitti
  • quote:

    Orijinalden alıntı: SeninSorununNe

    valla hocanın dediğine göre inputta değişiklik yapmayacağız tüm değişiklikleri yapıp outputa yazacağız ve input aynı kalacakmış. bi de argv, argc den bahsediyolar onların ne olduğunu hiç bilmiyorum. sanırım onlarla ilgili bişey. bi de bu verdiğiniz kodu çalıştırdım hiç bişey yazmadan program bitti

    Konudaki ilk mesajinda, nasil ayiririm dedin.

    Benim verdigim output file yaratmiyor zaten sadece konuyu acarken yazdigin "ayirma" islemini yapiyor ve ekrana veriyor, main() functionundaki return 0; den once getch(); koyarsan, en tepedeki satirada #include<conio.h> eklersen ciktiyi gorursun.


    Simdi bu mesajinda kafam karisti,

    Inputta degisiklik yapmayacagiz diyorsun, yani input.txt oldugu gibi kalicak.
    Sonra degisiklik yapicaz demissin, ama ne degisikligi?
    File output isi de read gibi ama bu sefer write-only sekilde access yapiyorsun.

    argv ve argc programi parameter ile calistirmak icindir.
    Misal linux icin terminalde:

    ./program parameter1 parameter2 ... parametern

    windows icin dosta:

    program.exe parameter1 parameter2 ... parametern

    seklindedir.

    Bu parametreleri char * olarak alirsin.

    Yani

    programinda

    printf("%s\n", argv[1]);

    varsa ve programi:

    program.exe check123

    seklinde calistirirsan alacagin sonuc

    "check123" seklinde olur.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.