int main(int argc, char *argv[])
{
FILE *f = fopen("plik.txt", "r");
int d=0;
int i=0;
int tab[20];
int j;
int x=0;
int cyfra;
printf("podaj cyfre");
scanf("%d",&cyfra);
if (f==NULL) {
perror("Nie udalo sie otworzyc pliku");
return 1;
}
while(fscanf(f,"%d",&tab[i])!=EOF)
{
i++;
d++;
}
for(j=0;j<d;j++)
{
if(tab[j]==cyfra)
x++;
}
printf("%d",x);
getch();
return 0;
}
</code>
ed...@orange.pl napisał(a):
> int main(int argc, char *argv[])
> {
> FILE *f = fopen("plik.txt", "r");
a dalej czytasz z niego binarnie "%d"
> while(fscanf(f,"%d",&tab[i])!=EOF)
> {
>
pozdrawiam
Rafał Żurawski
--
http://www.e-programowanie.pl
BLOG: http://www.e-programowanie.pl/blog
> Witam.Mam problem z programem zliczajacym wystepowanie cyfry w pliku.
> Warunek if(tab[j]==cyfra) nie jest spelniony zmienna x caly czas wynosi 0
> .
a czy w tej postaci w ktorej podales on ci sie kompiluje?
> <code>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(int argc, char *argv[])
> {
> FILE *f = fopen("plik.txt", "r");
>
> int d=0;
> int i=0;
>
> int tab[20];
> int j;
> int x=0;
> int cyfra;
> printf("podaj cyfre");
> scanf("%d",&cyfra);
>
> if (f==NULL) {
> perror("Nie udalo sie otworzyc pliku");
> return 1;
>
>
> }
>
> while(fscanf(f,"%d",&tab[i])!=EOF)
> {
>
> i++;
> d++;
> }
> } <----- skasuj ten nawias
> No tak otwierasz plik tekstowo, a powinien być "rb"
>
> ed...@orange.pl napisał(a):
>
>
>> int main(int argc, char *argv[])
>> {
>> FILE *f = fopen("plik.txt", "r");
>
>
> a dalej czytasz z niego binarnie "%d"
>
czy przemyslales to co napisales?
po pierwsze ten plik nie jest otwarty do czytania w trybie binarnym, a po
drugie do czytania plikow binarnych uzywa sie np: fread a nie fscanf.
> Witam.Mam problem z programem zliczajacym wystepowanie cyfry w pliku.
> Warunek if(tab[j]==cyfra) nie jest spelniony zmienna x caly czas wynosi 0
> .
> <code>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(int argc, char *argv[])
> {
> FILE *f = fopen("plik.txt", "r");
>
> int d=0;
> int i=0;
>
> int tab[20];
> int j;
> int x=0;
> int cyfra;
> printf("podaj cyfre");
> scanf("%d",&cyfra);
>
> if (f==NULL) {
> perror("Nie udalo sie otworzyc pliku");
> return 1;
>
>
> }
>
> while(fscanf(f,"%d",&tab[i])!=EOF)
> {
>
> i++;
> d++;
> }
sory za drogiego posta ale cos sie poprzestawialo w tamtym
chodzi o ten
tak, kompiluje sie
program liczy dobrze
acdwas@localhost:~$ cat plik.txt
1 2 3 4 3 2 3
acdwas@localhost:~$ ./a.out
podaj cyfre: 3
3
acdwas@localhost:~$
acdwas@localhost:~$ cat plik.txt
1
2
3
4
2
4
2
2
acdwas@localhost:~$ ./a.out
podaj cyfre: 2
4
acdwas@localhost:~$
cos moze masz z plikiem
tak dziala ale tylko wtedy jak w pliku sa odstepy miedzy cyframi i co
zrobic zeby cyfra nie byla traktowana jako spojny ciag cyfr np. 323
bylo traktowane jako 3 2 3
pozdrawiam
Rafał Żurawski
Sławek
--
________ Beanow pedzono za miasto i tam im obcinano pila
_/ __/ __/ niepotrzebne czesci.
\__ \__ \_______________________________________________________________
/___/___/ Sławomir Szczyrba steev/AT/hot\dot\pl
Udalo mi sie rozwiazac ten problem za pomocą funkcji fgetc wczytujac
plik znak po znaku i sprawdzajac funkcją isdigit czy znak jest cyfrą
i tak sprawdzone znaki dodaje do tablicy char a nastepnie wartosc
szukaną w pliku konwertuje funkcją sprintf na char i w petli
porównuje
wartosc z tablicy z wartoscia przekonwertowana i jesli jest true
zwiekszana jest zmienna ktora jest liczbą wystapien danej cyfry w
pliku.