2016-12-04 1 views
-3

хорошо, поэтому я получаю две ошибки.C++ регистрация и вход в программу нужна помощь

  1. недопустимый указатель дополнение [в (имя пользователя + ".txt" строк)]
  2. функция GetLine должна иметь прототип.

Вот код, я делаю регистрацию/регистрацию/регистрационную форму. Будет добавлено немного больше функциональности к нему позже, например. **** для пароля и ограничения для пароля тоже. на данный момент я застрял здесь и не знаю, как действовать дальше. Более того, меня вынуждают использовать turbo C++, потому что школа :))))). Пожалуйста, предложите неплохие компиляторы для MacOSX. Спасибо!

#include<iostream.h> 
    #include<fstream.h> 
    #include<conio.h> 
    #include<stdio.h> 
    #include<string.h> 

    void register_user(); 
    void login_user(); 
    void main_menu(); 

    int IsLoggedIn() 
    { 
     char username[20],password[20],un[20],pw[20]; 
     cout<<"Enter Username: ";gets(username); 
     cout<<"Enter Password: ";gets(password); 

     ifstream read(username + ".txt"); 
     getline(un,read); 
     getline(pw,read); 

     if(un==username && pw==password) 
     { 
      return 1; 
     } 
     else 
     { 
      return 0; 
     } 
    } 

    void main() 
    { 
     main_menu(); 
    } 

    void main_menu() 
    { 
     int choice; 
     cout<<"1. Register\n2. Login\nYour Choice: "; cin>>choice; 
     switch(choice) 
     { 
      case 1: register_user(); break; 
      case 2: login_user(); break; 
      default: break; 
     } 
    } 

    void register_user() 
    { 
     char username[20], password1[20],password2[20]; 
     cout<<"Enter Username: ";gets(username); 
     rev1:cout<<"Enter Password: ";gets(password1); 
     cout<<"Enter Password again: ";gets(password2); 
     while (password1!=password2) 
     { 
      goto rev1; 
     } 
     ofstream file; 
     file.open(username + ".txt"); 
     file<<username<<endl<<password1; 
     file.close(); 
    } 

    void login_user() 
    { 
     int chk=IsLoggedIn(); 
     if(chk==1) 
     { 
      cout<<"Log in successfull!\n"; 
     } 
     else 
     { 
      cout<<"Log in unsucessfull!\n"; 
     } 
    } 
+0

Используйте 'std :: string', а не' char [] '. Также '#include ' не является стандартным C++. Вы используете Turbo C++? –

+0

Да, братан, я упомянул это выше: P –

+0

Пожалуйста, отредактируйте свой вопрос, чтобы предоставить [mcve]. –

ответ

1

Вы не можете использовать оператор '+' для строк C-Style.

Вам необходимо будет использовать strcat() или snprintf.

Также используйте либо fscanf, либо fread или fgets для чтения в массивы символов.

Вы не можете использовать оператор == для строк C-Style (массивы символов), используйте strcmp. operator == будет сравнивать значения в указателях, а не на указанном тексте.

Если вы собираетесь использовать строки C-Style, я настоятельно рекомендую вам ознакомиться с семейством функций str*().

Смежные вопросы