Funkcja rejestrujaca użytkowanika - źle wczytuje dane

0

Witam,
kolejny, pewnie równie błahy problem jak ostatnio, który mnie przerósł.

Funkcja w założeniu ma pobrać nick, jaki user będzie chciał mieć, sprawdzić w pliku 'pass' czy nick nie jest używany, jeżeli nie jest to zapisać nowego usera. Jeżeli jest taki nick to zapytać, czy chce wprowadzić inny.

Pierwsza część działa dobrze, zepsuło sie, gdy dodałem pętle while (powt==1). Gdy wprowadzimy nick który już jest, to od razu sie wywala - przyjmuje wyb!='t' nawet jak wpiszemy 't'..

kod mojej funkcji:

 int rejestruj (){

    	char nick[8];
    	char haslo[8];
    	int powt=1;
    	char wyb;
    	int i;
    	
    	while (powt==1){
	 FILE * hPlik = fopen( "pass", "a+" );
    	 system("cls");    		
    	 printf ("Podaj login jaki chcesz miec. Max 8 znakow. \n");    	 
    	 scanf ("%s", &nick1);
    	
            //***************** sprawdzanie dostepnosci nicku****************************//
    	 while (!feof(hPlik)) {
    		
    		fscanf(hPlik, "%s %s", &nick, &haslo);	
			if (strcmp(nick1,nick)==0) {
				printf ("\nNick juz zajety \n");
				printf ("Jezeli chcesz sprobowac ponownie, nacisnij t\n");				
		 		scanf ("%c", &wyb);   
				//printf("%c\n",wyb);
    			if (wyb!='t')
					return(2);   				    				
			}
			else if (strcmp(nick1,nick)!=0) powt=0;	   
    	 }     	 			    	 
    	         fclose( hPlik );
    	}
    	
    	FILE * hPlik = fopen( "pass", "a+" );
    	printf ("\nPodaj haslo. Max 8 znakow. \n");
    	scanf ("%s", &haslo1);
    	
		//******** TO DO ** dorobic szyfrowanie **************** TO DO ************/    	
		fprintf (hPlik, "%s %s 0 0\n", nick1,haslo1);    	
    	
        fclose( hPlik );
        return(1);
     
	
}

pozdrawiam

0
  1. Nie wiadomo co to jest "nick1"
  2. Jak czytasz do char* to bez & bo sama nazwa tablicy zrzutuje się do wskaźnika na pierwszy element.
  3. Serio chcesz za każdym razem otwierać plik i sprawdzać? o_O Nie lepiej otworzyć plik raz, wczytać wszystkie loginy i hasła a potem sobie sprawdzać?
0

nick1 to tez char[8]

ad 3
to jakaś różnica? może oprócz estetycznej, bo praktycznie wydaje mi się, że nie ma przez to program nie działa zbytnio wolniej. tak mi było łatwiej, bo zamiast bawić się w zapisywanie loginów, mogłem wykorzystać już wcześniej napisany kod

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