[C] Operacje na plikach

0

Mam za zadanie napisać program, który będzie składał się z funkcji wczytującej dane z pliku csv i z funkcji wpisującej dane do pliku csv.

Funkcja która ma zapisywać dane do pliku csv działa. Ale wpisuje dane w jedną kolumne. A ma wpisywać dane w dwie kolumny. Nie wiem jak to zrobić.

Natomiast funkcja która pobiera dane z pliku i zapisuje je do tablicy coś nie działa.

Proszę o wyrozumiałość. Dopiero zaczynam ;)

#include <iostream>
#include <cstring>

using namespace std;

void WyswietlMenu()
{
    cout << "MENU" << endl;
    cout << "1-Zapisz do tablicy" << endl;
    cout << "2-Zapisz do pliku" << endl;
    cout << "x-Wyjscie" << endl;
}

void ReadFile(char *FileName)
{
    int liczba1; 
    float liczba2; 
    int idx = 0;
    int tab1[100];
    float tab2[100];
    FILE *plik=fopen(FileName, "r+t");

    while(fscanf(plik,"%d,%f", &liczba1, &liczba2)>0)
    {
        tab1[idx]=liczba1;
        tab2[idx]=liczba2;
        idx++;
    }
    fclose(plik);
    for(int i =0; i<100; i++)
    {
        printf("%d ", tab1[i]);
        printf("%f", tab2[i]);
    }
}

void Export2File(char *FileName)
{
    float tab1[5];
    float tab2[5];

    float liczba;

    printf("Podaj 5 liczb: ");
    for (int i=0; i<5; i++)
    {
        scanf("%f", &liczba);
        tab1[i]=liczba;
        tab2[i]=liczba*liczba;
    }

    for(int i=0; i<5; i++)
        printf("%.2f ", tab1[i]);
    printf("\n");

    for(int i=0; i<5; i++)
        printf("%.2f ", tab2[i]);
    printf("\n");

    FILE *plik=fopen(FileName, "w+t");

    for(int i=0; i<5; i++)
        fprintf(plik, "%f\n, %f\n", tab1[i], tab2[i]);

    fclose(plik);
}

int main()
{
      char opcja='a';
      char *plik = "xxx.csv";

      while(1)
      {
          WyswietlMenu();
          cin>>opcja;
          switch(opcja)
          {
                   case '1': ReadFile(plik); break;
               case '2': Export2File(plik); break;
                   case 'x': 
           case 'X': return 0;  
          }       
      }      

}
0

Ale format pliku CSV to:

WartoscA1,WartoscB1
WartoscA2,WartoscB2
WartoscA3,WartoscB3
(...)

Czyli:

  1. Kolejne kolumny oddzielane są przecinkiem.
  2. Entera używamy dopiero, gdy zaczynamy nowy wiersz.
  3. Nie wiem, czy nie trzeba jeszcze byłoby sprawdzić opcji regionalnych - na przykład w polskim Excelu zamiast przecinków trzeba użyć średników.
0

czyli tak?

for(int i=0; i<5; i++)
   fprintf(plik, "%f, %f\n", tab1[i], tab2[i]);

ale tak też się poprawnie nie wyświetla. W pliku csv mam po prostu wartosc1, wartosc2 w kolumnie A.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0