佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 852|回复: 2

C++ 验证username的问题

[复制链接]
发表于 2-3-2006 02:01 AM | 显示全部楼层 |阅读模式
小弟无聊,做一个program可以验证username 是否正确...

小弟的txt file,放了三个username...
我的问题是要怎样弄掉那个access denied?
我的code 如下,请大家帮忙...
谢谢!
int username()
{
        int ch;
       
        char user_in[50];
        char read[50];
        ifstream read_pass("username.txt");
        if(read_pass.fail())
                cerr<<"ERROR";

        cout<<"Username:";
        fflush(stdout);
        int i=0;
       
        cin>>ch;
  
        read_pass.getline(read, 50);
        if(strcmp(user_in,read)){
                cout<<"\nAccess denied\n\n";
                read_pass.seekg(0);
                read_pass.clear();
               
        }
        return 0;

}
回复

使用道具 举报


ADVERTISEMENT

发表于 2-3-2006 11:55 PM | 显示全部楼层
int username(){
        int ch;           //用途不详...
        char user_in[50];   //zomok没用到?
        char read[50];
        ifstream read_pass("username.txt");
        if(read_pass.fail())
                cerr<<"ERROR";
        cout<<"Username:";
        fflush(stdout);
        int i=0;           //用途不详...
        cin>>ch;           //应该用cin.get(user_in,50);
        read_pass.getline(read, 50);
        if(strcmp(user_in,read)){
                cout<<"\nAccess denied\n\n";
                read_pass.seekg(0);
                read_pass.clear();
        }
        return 0;
}

由于以上的user_in源码没有任何输入(user_in=""),
所以从username.txt读取并储存在read的资料(read="(username)")
在strcmp之下的到的答案就是"true"或称为"1",
if(strcmp(user_in,read))自然就会=true,然后就cout<<"Access denied";

另外,reading username from username.txt只做了一次,既是只读取text file的第一行字,
剩下的那几行应该没被读取。
回复

使用道具 举报

发表于 3-3-2006 12:08 AM | 显示全部楼层
这是我尝试修改后的程式码:

  1. #include<iostream>
  2. #include<fstream>
  3. using namespace std;

  4. int main(){
  5.         int ch=0;
  6.         char user_in[50];
  7.         char read[50];
  8.         ifstream read_pass("username.txt");
  9.         if(read_pass.fail())
  10.                 cerr<<"ERROR";
  11.         cout<<"Username:";
  12.         fflush(stdout);
  13.         int i=0;
  14.         cin.get(user_in,50);
  15.         while(read_pass.getline(read, 50)){
  16.                 if(strcmp(user_in,read)){
  17.                         ch=0;                       
  18.                 }
  19.                 else{
  20.                         ch=1;
  21.                         break;
  22.                 }
  23.         }
  24.         if(ch==1){
  25.                 cout<<"pass"<<endl;
  26.         }
  27.         else{
  28.                 cout<<"\nAccess denied\n\n";
  29.         }
  30.         return 0;
  31. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 19-8-2025 10:46 AM , Processed in 0.102060 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表