Wczytywanie danych z pliku i dyamiczna alokacja w C

0

Witam wszystkich serdecznie!
Nie radzę sobie z odczytem pliku w C i dlatego zwracam się z prośbą o pomoc. Mój problem jest następujący:
Dane w pliku wyglądają następująco:
3; 1; 12; 3;
4; 4; 5; 61; 7;
(Dla ułatwienia wprowadziłem pierwszą cyfrę która jest ilością cyfr w wierszu)

Fragment kodu programu:

{
     printf("\n");
     printf("Podaj nazwe pliku do odczytu\n");
     scanf("%s",&we);
     fpwe=fopen(we, "rb");
    if(fpwe==NULL){
                   printf("nie można otworzyc");
                   return 1;
                   }
    printf("podaj nazwe pliku wyjsciowego\n");
    scanf("%s",wy);
    fpwy=fopen(wy, "wb");
    if(fpwy==NULL){
                   printf("nie można otworzyc");
                   return 1;
                   }
fscanf(fpwe,"%[^;]",&n);
printf("%d",n);
system("pause");
p = malloc(n * sizeof(int));
for(i=0;i<n;i++){
                 fscanf(fpwe,"%[^;]",&p[i]);
                 }
p1 = malloc(m * sizeof(int));
fscanf(fpwe,"%[^;]",&m);
for(i=0;i<m;i++){
                 fscanf(fpwe,"%[^;]",&p1[i]);
                 }   
                 for(i=0;i<n;i++){
                 printf("%d",&p[i]);
                 }              
free(p);
free(p1);
   
break;
}

Plik wyjściowy na tym etapie jest jeszcze nieużywany, wszystkie zmienne zadeklarowane, komplikuje się (Dev C++) ale źle odczytuje dane z pliku. Co zrobić z tym fantem?

0

Plik wejściowy wygląda tak:

3; 12; 123; 56;

Kod obsługujący:

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
FILE *plik;
int i,c,temp;
c = 0;
temp = 0;
plik = fopen("liczby.txt", "r");

fscanf(plik, "%d%*c", &c);
printf("Trzeba wczytac: [%d] - liczb\n", c);

for(i=0;  i< c; i++) {
  fscanf(plik, "%d%*c", &temp);
  printf("Wczytano: [%d]\n", temp);        
}

return 0;
}

Wynik:

Trzeba wczytac: [3] - liczb
Wczytano: [12]
Wczytano: [123]
Wczytano: [56]
0

Super dzięki wielkie. Teraz mam problem jak dochodzą do tego słowa, mianowicie mam plik:
dziura w moscie;10.25;22-10-2003
Jak wczytać w całości całe zdane do stringa?

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
FILE *plik;
int d,m,r;
float c;
char nazwa[100];

plik = fopen("baza.txt", "r");
 
fscanf(plik, "%s%*c %f%*c %d%*c %d%*c %d%*c", &nazwa, &c, &d, &m, &r);
printf("%s; %f; %d-%d-%d\n", nazwa, c, d, m, r);

system("pause");
return 0;
}

Powyższy kod wczytuje tylko pierwszy wyraz. Z resztą też mam problem.

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