查看: 852|回复: 2
|
C++ 验证username的问题
[复制链接]
|
|
小弟无聊,做一个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;
} |
|
|
|
|
|
|
|
发表于 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
|
显示全部楼层
这是我尝试修改后的程式码 :
- #include<iostream>
- #include<fstream>
- using namespace std;
- int main(){
- int ch=0;
- 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.get(user_in,50);
- while(read_pass.getline(read, 50)){
- if(strcmp(user_in,read)){
- ch=0;
- }
- else{
- ch=1;
- break;
- }
- }
- if(ch==1){
- cout<<"pass"<<endl;
- }
- else{
- cout<<"\nAccess denied\n\n";
- }
- return 0;
- }
复制代码 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|