wczytanie jednej z kilku kolumn danych z pliku

0

Witam. Jestem zielony w programowaniu a muszę zrobić wczytanie z pliku co ma 3 kolumny danych oddzielone średnikami, a potrzebuje do dalszych operacji tylko pierwsza kolumnę? Pomoże ktoś mi to zrobić. Z góry dzieki.
o co sam zacząłem próbować. dałem define N50 zeby było łatwiej mi robić ale tak naprawdę nie powinno być tego tylko pętla, która wypisze wszystkie do ostatniego wyrazu

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N  50

int main()
{
    int i;
    double tab_znaki[N];
    wczytaj(tab_znaki);
    for(i;i<N;i++)
    {
        printf("%d ", tab_znaki[i]);
    }
    return 0;
}
void wczytaj(double tab_znaki[])
{
      int j, i=0;
      FILE *plik;
      if  ((plik=fopen("dane.txt", "r"))==NULL)
      {
          printf("Nie moge otorzyc pliku!\n");
      }

      while (feof(plik)==0)
      {
               fscanf(plik, "%f", *"%f", *"%f", &tab_znaki[i]);
               i++;
      }
      if  (fclose(plik))
      {
         printf("Nie moge zamknac pliku!\n");
      }

      for(j=0;j<i;j++)
      {
         printf("%f ", tab_znaki[j]);
      }
      return 0;
}

kod dałem w <code> - msm

1
fscanf(plik, "%f", *"%f", *"%f", &tab_znaki[i]);

To niezbyt ma sens. Prawdopodobnie chodziło Ci o coś w rodzaju

fscanf(plik, "%f;%*f;%*f", &tab_znaki[i])

(format musi być jednym łańcuchem, reszta to parametry).

Z innych błędów:
return 0; w funkcji typu void - kompilator Cię na pewno ostrzegał.

Jeśli nie chcesz N, zwracaj i (ilość wczytanych elementów) i rób pętlę do tej wartości.

0

tego returna tam nie ma, zapomniałem skasować. mógłbyś mi kolego podpowiedzieć jak zrealizować to żeby wczytywało do tablicy dane tylko z 1 kolumny? podejrzewam ze nie będzie Ci się chciało pisać całego programu, więc jeśli możesz to napisz słownie jak to zrobić i jakie funkcje uzyc

0
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int i;
    double *tab_znaki = malloc(2000 * sizeof(double));
    wczytaj(tab_znaki);

    free(tab_znaki);
    return 0;
}
void wczytaj(double tab_znaki[])
{
      int j, i=0;
      FILE *plik;
      if  ((plik=fopen("dane.txt", "r"))==NULL)
      {
          printf("Nie moge otorzyc pliku!\n");
      }

      while (feof(plik)==0)
      {
               fscanf(plik, "%lf ; %*lf ; %*lf ; %*lf", &tab_znaki[i]);
               printf("%d %.2f\n",i,tab_znaki[i]);
               i++;
      }

      if  (fclose(plik))
      {
         printf("Nie moge zamknac pliku!\n");
      }

      for(j=0;j<i;j++)
      {
         printf("%.2f ", tab_znaki[j]);
      }
      return 0;
}

przerobiłem na coś takiego ale nadal nie daje tego co bym chciał, daje jakieś śmieci
może to głupie ale nie wiem jak dodawać program żeby był taki przejrzysty ja wyzej

prawie dobrze te tagi ;). Żeby zadziałało, <code class="c"> (kod) </code>

0

dziękuje że mi pomagaliście. już doszedłem jak to zrobić;-)

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