Skocz do zawartości


Dentysta Gliwice



- - - - -

problem z programem


1 odpowiedź w tym temacie

#1 katia185

    Nowicjusz

  • Użytkownicy
  • 1 postów

Napisano 02 luty 2012 - 21:26





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.


#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;
}


Kasia R.

  • Użytkownicy
  • PipPipPipPipPipPip
  • 2899 postów
  • PłećKobieta

dentysta Gliwice


#2 ponury_murzyn

    Przyjaźnie nastawiony do świata 21-latek ;)

  • Użytkownicy
  • PipPipPipPipPipPip
  • 4254 postów

Napisano 23 luty 2012 - 13:41

Wyświetl postUżytkownik katia185 dnia 02 luty 2012 - 21:26 napisał

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...):
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.

Użytkownik ponury_murzyn edytował ten post 23 luty 2012 - 13:43

http://hatefullguy.wordpress.com/ - "Jak chcesz napisać co Ci się nie podoba, albo o czym myślisz, to załóż sobie pedalskiego bloga i wy****laj." - ktoś na sadistic do jakiegoś marudnego kolesia. Podchwyciłem i jest ;]

Najnowszy post - "Zmęczenie materiału" - mój blog stał się dokładnie tym czym chciałem, aby nigdy się nie stał - moim marudzeniem.
http://hatefullguy.w...ycie-materialu/

Dlaczego ludzie tyją ? http://kwejk.pl/obra...dzie,tyją?.html




Dodaj odpowiedź



  





Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych