problem z programem

katia185

Nowicjusz
Dołączył
2 Luty 2012
Posty
1
Punkty reakcji
0
Witam jestem początkującą i nie za bardzo mam pojęcie co do programowania ale niestety na zaliczenie muszę napisać program książkę telefoniczną która pobiera dane z pliku. Niestety mój program przypisuje cały czas ten sam numer różnym osobą :( nie wiem jaka jest tego przyczyna bardzo proszę o pomoc.


Kod:
#include <stdio.h>
#include <string.h>


#define FILE_NAME "osoby.txt"

int pobierz_numer_osoby(char tel[]);

int main()
{
char tel[10];
char wybor = ' ';
printf("ksiazka telefoniczna\n");

printf("\n1 - wczytaj osobe \n0-wyjscie\n\n");

int jeden = 1;
int znaleziona = 0;
while((wybor = getchar()) != '0'){
if(jeden == 0) printf("\n\n1 - wczytaj osobe \n0-wyjscie\n\n");
switch(wybor){
case '1': znaleziona = pobierz_numer_osoby(tel);
if(znaleziona == 1)
printf("Numer tej osoby to: %s" , tel);
else if(znaleziona == 0)
printf("Niesty nie znaleziono tej osoby!");
else
printf("Niesty plik z osobami nie istnieje!");
jeden = 0;
break;
}

}

return 0;

int pobierz_numer_osoby(char tel[])
{

char name[100], surname[100];
char readName[100], readSurname[100];

FILE *fp;

fp = fopen(FILE_NAME, "r");
if(fp != NULL){


printf("Podaj imie:");
scanf("%s", name);
printf("Podaj nazwisko:");
scanf("%s", surname);

(fscanf(fp, "%s %s %s", readName, readSurname, tel)!= EOF);

fclose(fp);
return 1;
}
 

ponury_murzyn

Przyjaźnie nastawiony do świata 22-latek ;)
Dołączył
10 Lipiec 2005
Posty
4 235
Punkty reakcji
53
Wiek
34
Miasto
Wrocław
Witam jestem początkującą i nie za bardzo mam pojęcie co do programowania ale niestety na zaliczenie muszę napisać program książkę telefoniczną która pobiera dane z pliku. Niestety mój program przypisuje cały czas ten sam numer różnym osobą :( nie wiem jaka jest tego przyczyna bardzo proszę o pomoc.

Ten program ma wypisywać wszystkich na raz? czy dopiero jak podasz imie i nazwisko to ma wyświetlić numer telefonu? Dołączasz bibliotekę string, a w ogóle z niej nie korzystasz ;x (chyba, że w C nie ma zmiennych typu string, dawno już nie pisalem nic w C)

ja bym to zrobił tak (napiszę już po polsku nazwy funkcji, ale powinno sie to robić po angielsku...):
Kod:
char* ZnajdzNumer(char* imie, char* nazwisko)
{
  int znaleziono = 0;
  char *tempImie, *tempNazwisko, *tempNumerTel;
  FILE* plik = fopen("osoby.txt", "r");
  while(znaleziono != 1 || plik != EOF) {
	fscanf(plik, "%s %s %s", tempImie, tempNazwisko, tempNumerTel);
	if (tempImie == imie && tempNazwisko == nazwisko)
	  znaleziono = 1;
  }
  return tempNumerTel;
}
int main()
{
  //blabla - całe menu do obslugi.
  //wyswietlanie podaj imie:
  scanf("%s", imie);
  //wyswietlanie podaj nazwisko
  scanf("%s", nazwisko);
  char* numer = ZnajdzNumer(imie, nazwisko);
  printf("numer to: %s" numer);
}

Nie wiem czy ten kod będzie działał, bo nie mam kompilatora do C, ale ogólnie to ma mieć taki kształt.
 
Do góry