Skocz do zawartości
wragler

Blad W Kodzie Programu W C

Rekomendowane odpowiedzi

Witam

CO moze oznaczac blad w kodzie ?

 

 

" implicit declaration of function `int atof(...)'"

 

 

while(fscanf(plik_we, "%s", buff) != EOF) {    a[p] = (float)atof(buff);    p++; }

Z gory dzieki za pomoc

 

Oto caly program:

#include<stdio.h> #include<conio.h> float a[176]; void sortuj(int i_el) { int zmiana=0, i; float temp; do { zmiana=0; for(i=1;i<i_el;i++) if(a[i-1]>a[i]) { temp=a[i]; a[i]=a[i-1]; a[i-1]=temp; zmiana++; } } while(zmiana>0); } void main(void) { FILE * plik_we; FILE * plik_wy; int p; plik_we=fopen("wyniki.txt","r"); if(plik_we == NULL)    return; p = 0; char buff[80]; while(fscanf(plik_we, "%s", buff) != EOF) {    a[p] = (float)atof(buff);    p++; } fclose(plik_we); printf("Tablica załadowana:\n"); sortuj(176); plik_wy = fopen("wynikipos.txt","w"); for(p = 0; p < 176; p++)    fprintf(plik_wy, "%f\n", a[p]); fclose(plik_wy); printf("Tablica posortowana i zapisana do pliku\n"); getch();}

a oto tablica

460.7193 1.035544 10.0175 0.017589 470.7314 1.072443 20.0349 0.034988 480.7431 1.110642 30.0523 0.052487 490.7547 1.150441 40.0698 0.069986 500.7660 1.191840 50.0872 0.087585 510.7771 1.234939 60.1045 0.105184 520.7880 1.27998 70.1219 0,122883 530.7986 1.327037 80.1392 0.140582 540.8090 1.376436 90.1564 0.158481 550.8192 1.428135 100.1736 0.176380 560.8290 0.194479 570.8387 1.539933 120.2079 0.212678 580.8480 1.600332 130.2250 0.230977 590.8572 1.664331 140.2419 0.249376 600.8660 1.732130 610.8746 1.804029 160.2756 0.286774 620.8829 1.880728 170.2924 0.305773 60.8910 1.962627 180.3090 0.324972 640.8988 2.050326 190.3256 0.344371 650.9063 2.144525 200.3420 0.364070 150.2588 0.267975 660.9135 2.246024 210.3584 0.383969 670.9205 2.355923 220.3746 0.404068 680.9272 2.475122 230.3907 0.424567 690.9336 2.605121 240.4067 0.445266 700.9397 2.747520 250.4226 0.466365 710.9455 2.904219 260.4384 0.487764 720.9511 3.077718 270.4540 0.509563 730.9563 3.270917 280.4695 0.531762 740.9613 3.487416 290.4848 0.554361 750.9659 3.732115 300.5000 0.577460 760.9703 4.010814 310.5150 0.600959 770.9744 4.331513 320.5299 0.624958 780.9781 4.704612 330.5446 0.649457 790.9816 5.144611 340.5592 0.674556 800.9848 5.671310 350.5736 0.700255 810.9877 6.31389 360.5878 0.726554 820.9903 7.11548 370.6018 0.753653 830.9925 8.14437 380.6157 0.781352 840.9945 9.5144 6 390.6293 0.809851 850.9962 11.43015 400.6428 0.839150 860.9976 14.30074 410.6561 0.869349 870.9986 19.08113 420.6691 0.900448 880.9994 28.63632 430.6820 0.932547 890.9998 57.29001 440.6947 0.965746 901.0000 450.7071 1.000045
pozdrawiam Edytowane przez wragler

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzieki dziala doskonale.

Mam jeszcze jeden problem

CHce aby program czytal mi pierwsza liczbe z pliku i przypisywal do zmiennej n.(bedzoe to liczba calkowita)

Mysle ze warto uzyc funkci "atof".

W jaki sposob top zrobic?

Bede wdzieczy za pomoc.

#include <stdio.h>#include<conio.h>#include <stdlib.h>  void main(void){ FILE * plik_we; int n,;char buff[1];plik_we=fopen("wyniki.txt","r"); fscanf(plik_we,"%d", n);a[p]=(float) atof(buff);printf("%f",n)getch();}
Edytowane przez wragler

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

masz tam same błędy w tym kodzie, napisz dokładnie co chcesz zrobić.

 

Jeśli ma pobierać z pliku zmienną typu integer to po co Ci później przypisywanie do tablicy a[] - jak przez samo wywołąnie funkcji fscanf(...,n) wczytuje z pliku do n. ( na dodatek a[], nie jest zdefiniowana ) - zmiennej typu float zwracanej przez funkcję atof() ( i tu też przesyłasz niezdefiniowaną zmienną buff :o ). ATOF() jeśli dobrze pamiętam to zamienia string na float'a, więc parametrem przesyłanym musi być string. Czyli buff ma być "stringiem".

 

Jeśli plik nie jest binarny tylko tekstowy to nie możesz %d pobierać bo dostaniesz śmieci.

Najprostszy kod:

 

#define MAX_DLUGOSC 100

#define NAZWA_PLIKU "wyniki.txt"

 

int n;

FILE *plik = NULL;

char buf[MAX_DLUGOSC];

if( plik = fopen( NAZWA_PLIKU, "r" )

{

 

fscanf(plik, "%s", buf ); // pobiera do buf string z plik.

n = atoi(buf) // zamienia buf na integer i zwraca do n

fclose(plik);

 

}

 

jak dobrze pamiętam to jest atoi() do zamiany stringa na integer.

Edytowane przez ojejku

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...