鱼C论坛

 找回密码
 立即注册
查看: 1827|回复: 25

[已解决]请问C++如何在控制台中设置输入为*号?

[复制链接]
发表于 2023-1-2 17:03:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 高山 于 2023-1-2 17:08 编辑

大佬们,不是道如何让在控制台中设置输入为*号?
我从网上搜了的都不符合我的代码
我的代码(请不要侵权):
#include"allinclude.h"
using namespace std;
string vname;
map <string,int> a;
map <string,int> huser;
map <string,string> vhuser;
double ch,yuan;
double zj;
string name;
int pass;
char yesno='n';
void start()
{
        system("color 7C"); 
        cout<<"----------欢迎来到商家系统 V3.0----------"<<endl;
        cout<<"在使用本系统之前,您需要阅读以下几点:"<<endl;
        cout<<"1.本系统的更新请关注fishc.com.cn中高山的发帖"<<endl; 
        cout<<"2.本程序是您的商家助理,但本程序没有存储功能,请不要在未记录数据前进行关闭程序"<<endl;
        cout<<"3.本程序是万能版,适用所有系统"<<endl;
        cout<<"↑以上就是本程序的信息了"<<endl;
        system("pause");
        system("cls");
}
void vspeak()
{
        cout<<"在使用本程序前,务必仔细查看使用说明"<<endl;
        cout<<"程序作者:高山"<<endl;
        cout<<"发布机构:鱼C论坛"<<endl;
        cout<<"程序版本:V3.0"<<endl;
        cout<<"更新链接:高山账户"<<endl;
        system("pause");
        system("cls"); 
}
void hello()
{
        cout<<"\n\
                           @\n\
                          / \\\n\
                          * *\n\
                          * *\n\
                          * *\n\
                      * * * * * *\n\
                    * * * * * * * *\n\
                  * * * * * * * * * *\n\
                          * *\n\
                          * *\n\
                        * * * *\n\
                      * * * * * *\n";
        cout<<"正在启动..."<<endl; 
    Sleep(200);
        system("cls"); 
    
}

void clac()
{
        system("color 2F");
        system("cls");  
        char ch;
        double number=0,doing;
        cout<<"欢迎您使用计算系统,为了保证计算的快速,将使用自动读取功能,第一步时无需按下回车"<<endl;
        while(true)
        {
                cout<<"请问您要进行什么操作?"<<endl;
                cout<<"1.加法 2.减法 3.乘法 4.除法 5.结束"<<endl; 
                ch=getch();
                if(ch=='1')
                {
                        cout<<"请输入加的数量:";
                        cin>>doing;
                        number+=doing;
                        cout<<"完成!"<<endl;
                        system("pause");
                        system("cls");
                }
                if(ch=='2')
                {
                        cout<<"请输入减的数量:";
                        cin>>doing;
                        number-=doing;
                        cout<<"完成!"<<endl;
                        system("pause");
                        system("cls");
                }
                if(ch=='3')
                {
                        cout<<"请输入乘的数量:";
                        cin>>doing;
                        number*=doing;
                        cout<<"完成!"<<endl;
                        system("pause");
                        system("cls");
                }
                if(ch=='4')
                {
                        cout<<"请输入除的数量:";
                        cin>>doing;
                        number/=doing;
                        cout<<"完成!"<<endl;
                        system("pause");
                        system("cls");
                }
                if(ch=='5')
                {
                        cout<<"结果是"<<number<<endl;
                        system("pause");
                        system("cls");
                        system("color 7A");
                        return ;
                 } 
        }
}
void store()
{
        system("cls"); 
        cout<<"欢迎来到商品管理系统"<<endl;
        cout<<"请输入商品名称:";
        cin>>name;
        cout<<"请输入商品价格:";
        cin>>yuan;
        if(yuan==0)
        {
                cout<<"价格不能为空哦~"<<endl;
                system("pause");
                system("cls");
        }
        else
        {
                a[name]=yuan;
                system("pause");
                system("cls");
        }

}
void vfind()
{
        system("cls"); 
        cout<<"欢迎进入商品查价系统!"<<endl;
        cout<<"请输入需要查找的商品名称:";
        cin>>name;
        if(a[name]==0)
        {
                cout<<"商品不存在哦~"<<endl; 
                a[name]=yuan;
                system("pause");
                system("cls");
        }
        else
        {
                cout<<"名称为 "<<name<<" 的价格为 "<<a[name]<<" 元"<<endl; 
                system("pause");
                system("cls");
        }
 } 
 void vdel()
 {
         system("cls");
         char choose;
         string vname; 
         system("color 4F");
         cout<<"您已经进入商品删除系统,删除后无法恢复,确认操作(y/n):";
         cin>>choose;
         if(choose=='y')
         {
                 cout<<"请输入需要删除的商品:";
                 cin>>vname;
                 if(a[vname]==0)
                 {
                         cout<<"删除失败!商品不存在"<<endl;
                         system("pause");
                         system("cls");
                         system("color 7C");
                         return;
                 }
                 a[vname]=0;
                 cout<<"删除成功!"<<endl;
                 system("pause");
                 system("cls");
                 system("color 7C");
                 return;
         }
         if(choose=='n')
         {
         system("color 7C");
                 return ;
         }
 }
void yuanwrite()
{
        system("cls");
        char choose;
        double lsyuan; 
        cout<<"欢迎使用智能账本功能!"<<endl;
        while(true)
        {
                cout<<"请输入目前是收入/支出/查看价格/退出智能账本(命令为:s/z/f/e):";
                cin>>choose;
                if(choose =='s')
                {
                        cout<<"请输入收入价格:" ;
                        cin>>lsyuan;
                        zj+=lsyuan; 
                        cout<<"成功!"<<endl;
                        system("pause");
                        system("cls");
                }
                else if(choose =='z')
                {
                        cout<<"请输入支出价格:";
                        cin>>lsyuan;
                        zj-=lsyuan;
                        if(zj<0) 
                        {
                                cout<<"余额为负数,余额为"<<zj<<"元"<<endl;
                        }
                        system("pause");
                        system("cls");
                }
                else if(choose=='f')
                {
                        cout<<"您的余额为"<<zj<<"元"<<endl; 
                        system("pause");
                        system("cls");
                }
                else if(choose=='e')
                {
                        cout<<"感谢使用!现在返回首页"<<endl;
                        system("pause");
                        system("cls");
                        return ;
                }

        }

        
}


void close()
{
        system("color 4F");
        system("cls");
        char choose;
        cout<<"确定关闭本系统?关闭后包括账本、商品的数据都会丢失!"<<endl;
        cout<<"请问是否关闭(y/n):";
        cin>>choose;
        if(choose == 'y')
        {
                cout<<"正在操作中..."<<endl;
                system("pause");
                exit(0);
        }
        else
        {
                system("color 7C");
                return ;
        }
}
void word()
{
        system("cls"); 
        int choose; 
        string vword; 
        cout<<"---------------------意见反馈内容---------------------"<<endl;
        cout<<"1.管理不当  2.发现bug  3.发展建议  4.其他反馈"<<endl;
        cout<<"请输入您的选择:";
        cin>>choose;
        if(choose==1)
        {
                cout<<"请输入具体内容,不支持多行文本:";
                cin>>vword;
                cout<<"请复制以下内容通知高山(系统不支持复制请右键点击程序标题,点击选择,复制):"<<endl;
                cout<<"意见反馈表"<<endl;
                cout<<"编号:1  类型:管理不当  版本:万能2.0"<<endl;
                cout<<"具体内容:"<<vword<<endl;
                cout<<"下面按下任意键后关闭"<<endl;
                system("pause");
                system("cls");
                return ;
        }
        if(choose==2)
        {
                cout<<"请输入具体内容,不支持多行文本:";
                cin>>vword;
                cout<<"请复制以下内容通知高山(系统不支持复制请右键点击程序标题,点击选择,复制):"<<endl;
                cout<<"意见反馈表"<<endl;
                cout<<"编号:2  类型:发现bug  版本:万能2.0"<<endl;
                cout<<"具体内容:"<<vword<<endl;
                cout<<"下面按下任意键后关闭"<<endl;
                system("pause");
                system("cls");
                return ;
        }
        if(choose==3)
        {
                cout<<"请输入具体内容,不支持多行文本:";
                cin>>vword;
                cout<<"请复制以下内容通知高山(系统不支持复制请右键点击程序标题,点击选择,复制):"<<endl;
                cout<<"意见反馈表"<<endl;
                cout<<"编号:3  类型:发展建议  版本:万能2.0"<<endl;
                cout<<"具体内容:"<<vword<<endl;
                cout<<"下面按下任意键后关闭"<<endl;
                system("pause");
                system("cls");
                return ;
        }
        if(choose==4)
        {
                cout<<"请输入具体内容,不支持多行文本:";
                cin>>vword;
                cout<<"请复制以下内容通知高山(系统不支持复制请右键点击程序标题,点击选择,复制):"<<endl;
                cout<<"意见反馈表"<<endl;
                cout<<"编号:4  类型:其他反馈  版本:万能2.0"<<endl;
                cout<<"具体内容:"<<vword<<endl;
                cout<<"下面按下任意键后关闭"<<endl;
                system("pause");
                system("cls");
                return ;
        }
 } 
void systemclose()
{
        system("cls");
        system("color 4F");
        char choose;
        cout<<"确定关闭本电脑?关闭后包括账本、商品的数据都会丢失!"<<endl;
        cout<<"请问是否关闭(y/n),输入操作前请保存未保存的工作:";
        cin>>choose;
        if(choose == 'y')
        {
                system("pause");
                system("shutdown -s -t 10");
        }
        else
        {
                system("color 7C");
                return ;
        }
}

void vsay()
{
        system("cls");
        cout<<"程序版本:万能系统版V3.0"<<endl;
        cout<<"更新日志:"<<endl;
        cout<<"-修复了部分bug"<<endl;
        cout<<"-增加了账户功能"<<endl;
        cout<<"-设置了账户的用户组"<<endl;
        cout<<"-其他关于账户的功能"<<endl;
        system("pause");
        system("cls");
}

void newuser()
{
        system("cls"); 
        string uname;
        int upass,choose;
        cout<<"您已经进入账户管理系统"<<endl;
        cout<<"请输入想要添加的用户名(谨慎起名,目前不支持修改账户昵称):";
        cin>>name;
        cout<<"请输入 "<<name<<" 的密码(密码不能设置为0,否则无效):";
        cin>>upass;
        cout<<"请输入 "<<name<<" 的用户组"<<endl;
        cout<<"1.管理团队 2.VIP用户 3.普通用户 4.禁止访问"<<endl;
        cout<<"您的选择是:";
        cin>>choose;
        huser[name]=upass;
        if(choose==1) vhuser[name]="管理团队";
        if(choose==2) vhuser[name]="VIP用户";
        if(choose==3) vhuser[name]="普通用户";
        if(choose==4) vhuser[name]="禁止访问"; 
        cout<<"新建成功!"<<endl;
        system("pause");
        system("cls");
 } 
 
 void vdeluser()
 {
         int yn2;
         string vname; 
         system("cls");
         system("color 4F");
         cout<<"您已进入账户删除系统"<<endl;
         cout<<"是否开始删除(是选择1,不是选择2):";
         cin>>yn2;
         if(yn2==2)
         {
                 system("color 7C");
                 return ;
         }
        cout<<"请输入需要删除的用户名:";
        cin>>vname;
        if(huser[vname]==0)
         {
                 cout<<"账户不存在!"<<endl; 
                 system("pause");
                 system("cls");
                 return ; 
          } 
        huser[vname]=0;
        vhuser[vname]="无效"; 
        cout<<"删除成功!"<<endl;
        system("pause");
        system("cls");
         system("color 7C");
 }
 void aduser()
 {
         int ch1,newpass;
         system("cls");
         string vhname,newname; 
         cout<<"欢迎进入账户管理系统"<<endl;
         cout<<"请输入需要管理的账户:";
         cin>>vhname;
         if(huser[vhname]==0)
         {
                 cout<<"账户不存在!"<<endl;
                                 system("pause");
                                 system("cls");
                                 return ;
          } 
         cout<<"账户名称:"<<vhname<<endl;
         cout<<"账户密码:"<<huser[vhname]<<"  账户权限:"<<vhuser[vhname]<<endl;
         cout<<"操作:"<<endl;
         cout<<"1.修改昵称 2.修改密码 3.设为管理"<<endl;
         cout<<"4.设为特权 5.设为普通 6.禁止访问"<<endl;
         cout<<"7.不操作"<<endl;
        cout<<"请输入您的选择:";
        cin>>ch1;
        if(ch1==1)
        {
                cout<<"由于用户名混乱,本站目前不支持修改昵称!"<<endl;
                system("pause");
                system("cls");
         } 
         if(ch1==2)
         {
                 cout<<"请输入 "<<vhname<<" 的新密码:";
                 cin>>newpass;
                 huser[vhname]=newpass;
                 cout<<"修改成功!"<<endl; 
                system("pause");
                system("cls");
         }
         if(ch1==3)
         {
                 vhuser[vhname]="管理团队";
                 cout<<"设置成功!"<<endl;
                 system("pause");
                system("cls");
         }
         if(ch1==4)
         {
                 vhuser[vhname]="VIP用户";
                 cout<<"设置成功!"<<endl;
                 system("pause");
                system("cls");
         }
         if(ch1==5)
         {
                 vhuser[vhname]="普通用户";
                 cout<<"设置成功!"<<endl;
                 system("pause");
                system("cls");
         }
         if(ch1==6)
         {
                 vhuser[vhname]="禁止访问";
                 cout<<"设置成功!"<<endl;
                 system("pause");
                system("cls");
         }
         if(ch==7)
                 {
                         return ;
                  } 
 }
 void namewrite()
 {
         system("cls");
         cout<<"抱歉,因为用户名混乱,本站不支持任何用户名修改!"<<endl;
         system("pause");
         system("cls");
 }
 
 void passwrite()
 {
         int vnewpass;
        int hpass2; 
        string vhname2; 
         system("cls");
         cout<<"为了保证账户安全,您需要重新进行用户名、密码的验证"<<endl;
         cout<<"请输入您的账号:";
    cin>>vhname2;
    cout<<"请输入您的密码:";
    cin>>hpass2;
    if(huser[vhname2] != hpass2)
    {
            cout<<"账户或密码错误!"<<endl;
            system("pause");
            system("cls");
            return ;
        }
        cout<<"输入正确!请输入您的新密码:"; 
        cin>>vnewpass;
        huser[vhname2]=vnewpass;
        cout<<"修改成功!"<<endl;
        system("pause");
        system("cls");
        yesno='n';
        return ;
 }
void work1()
{
    int ch=0;
    if(yesno='y') 
    {
            
        if(huser[vname] != pass )
        {
                cout<<"账号或密码错误!"<<endl;
                system("pause");
                system("cls");
                yesno ='n'; 
                return ;
        }
        if(vhuser[vname] == "管理团队") 
        {
            yesno='y'; 
            ch=0;
            cout<<"欢迎您回到首页,尊敬的用户 "<<vname<<",您的用户组为 "<<vhuser[vname]<<endl;
            Sleep(1000);
            system("cls");
            cout<<"------欢迎来到商家助理 V3.0------"<<endl;
            cout<<"请选择您需要使用的功能:"<<endl;
            cout<<"1.计算功能 2.添加商品 3.商品查价"<<endl;
            cout<<"4.删除商品 5.智能账本 6.意见反馈"<<endl;
            cout<<"7.添加账户 8.删除账户 9.管理账户"<<endl;
            cout<<"10.修改昵称 11.修改密码 12.退出账户"<<endl;
            cout<<"13.升级日志 14.关闭程序 15.关闭电脑" <<endl;
            cout<<"请输入您的选择:";
            cin>>ch;
            if(ch==1) clac();
            if(ch==2) store();
            if(ch==3) vfind(); 
            if(ch==4) vdel();
            if(ch==5) yuanwrite(); 
            if(ch==6) word();
            if(ch==7) newuser();
            if(ch==8) vdeluser();
            if(ch==9) aduser();
            if(ch==10) namewrite();
            if(ch==11) passwrite();
            if(ch==13) vsay();
            if(ch==14) close();
            if(ch==15) systemclose();
            if(ch==12)//12放在最后才能退出账户 
            {
                yesno='n';
                system("cls");
                return ;  
                        }                        
        }
        if(vhuser[vname] == "VIP用户") 
        {
            yesno='y'; 
            ch=0;
            cout<<"欢迎您回到首页,尊敬的用户 "<<vname<<",您的用户组为 "<<vhuser[vname]<<endl;
            Sleep(1000);
            system("cls");
            cout<<"------欢迎来到商家助理 V3.0------"<<endl;
            cout<<"请选择您需要使用的功能:"<<endl;
            cout<<"1.计算功能 2.添加商品 3.商品查价"<<endl;
            cout<<"4.删除商品 5.智能账本 6.意见反馈"<<endl;
            cout<<"7.修改昵称 8.修改密码 9.退出账户"<<endl;
            cout<<"10.升级日志" <<endl;
            cout<<"请输入您的选择:";
            cin>>ch;
            if(ch==1) clac();
            if(ch==2) store();
            if(ch==3) vfind(); 
            if(ch==4) vdel();
            if(ch==5) yuanwrite(); 
            if(ch==6) word();
            if(ch==7) namewrite();
            if(ch==8) passwrite();
            if(ch==10) vsay();
            if(ch==9)//9放在最后才能退出账户 
            {
                yesno='n';
                system("cls");
                return ; 
                        }                         
        }
        if(vhuser[vname] == "普通用户") 
        {
            yesno='y'; 
            ch=0;
            cout<<"欢迎您回到首页,尊敬的用户 "<<vname<<",您的用户组为 "<<vhuser[vname]<<endl;
            Sleep(1000);
            system("cls");
            cout<<"------欢迎来到商家助理 V3.0------"<<endl;
            cout<<"请选择您需要使用的功能:"<<endl;
            cout<<"1.计算功能 2.添加商品 3.商品查价"<<endl;
            cout<<"4.智能账本 5.修改昵称 6.修改密码"<<endl;
            cout<<"7.退出账户 8.升级日志" <<endl;
            cout<<"请输入您的选择:";
            cin>>ch;
            if(ch==1) clac();
            if(ch==2) store();
            if(ch==3) vfind(); 
            if(ch==4) yuanwrite(); 
            if(ch==5) namewrite();
            if(ch==6) passwrite();
            if(ch==8) vsay();
            if(ch==7)//9放在最后才能退出账户 
            {
                yesno='n';
                system("cls");
                return ;
                        }                          
        }
        if(vhuser[vname] == "禁止访问") 
        {
            ch=0;
            cout<<"欢迎您回来,尊敬的用户 "<<vname<<",您的用户组为 "<<vhuser[vname]<<endl;
            Sleep(1000);
            system("cls");
            cout<<"------欢迎来到商家助理 V3.0------"<<endl;
            cout<<"提醒:您的账户已被封禁"<<endl;
            cout<<"1.退出账户"<<endl;
            cin>>ch;
            if(ch==1)
            {
                cout<<"1秒后即将退出账户,感谢您的使用"<<endl;
                Sleep(1000);
                system("cls");
                yesno='n';
                return ;
            }
        }
    }
        
}
int main()
{
    huser ["Admin"]=123456;
    vhuser ["Admin"]="管理团队"; 
    start();
    vspeak();
    hello();
    while(true)
    {
            work1();
    }
}
就是只在work1函数中的输入密码环节设置输入内容为“*”,后面输入完了就解除(不过不要那种按退格键或者回车键就自动加一个字符的那种)
抱歉,给大家添麻烦了
最佳答案
2023-1-2 17:47:51
本帖最后由 人造人 于 2023-1-2 17:50 编辑

我没有找到通用的方法
这个代码不知道windows能不能用
dev-cpp的话应该能用吧
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <stdbool.h>

void echo(bool enable) {
    struct termios attr;
    tcgetattr(STDOUT_FILENO, &attr);
    attr.c_lflag &= ~(ICANON | ECHO);
    if(enable) attr.c_lflag |= ICANON | ECHO;
    tcsetattr(STDOUT_FILENO, TCSANOW, &attr);
}

void get_passwd(char buff[], size_t size, bool display_star) {
    if(size == 0) return;
    echo(false);
    for(size_t i = 0; i < size - 1; ++i) {
        int ch = getchar();
        if(ch == '\n' || ch == EOF) break;
        *buff++ = ch;
        if(display_star) putchar('*');
    }
    *buff = '\0';
    putchar('\n');
    echo(true);
}

int main(void) {
    char buff[1024];
    printf("请输入密码:");
    get_passwd(buff, 1024, true);
    puts(buff);
    printf("请输入名字:");
    scanf("%s", buff);
    puts(buff);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-2 17:06:42 | 显示全部楼层
本帖最后由 tommyyu 于 2023-1-2 17:14 编辑

可以使用getch函数来实现,但是局限性可能比较大

点评

具体?  发表于 2023-1-2 17:08
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:08:14 | 显示全部楼层
应该可以实现吧

点评

可以的,但都不适用于我的代码  发表于 2023-1-2 17:09
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-2 17:08:18 | 显示全部楼层
tommyyu 发表于 2023-1-2 17:06
可以使用getch函数来实现,但是局限性可能比较大

具体?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:10:21 | 显示全部楼层
个人认为可能是 cout, cin 的问题

点评

雀食有可能,所以该咋改?  发表于 2023-1-2 17:11
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:16:14 | 显示全部楼层
代码有点混乱,我整理整理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:22:32 | 显示全部楼层
不说 work1 输入密码的问题,首先我感觉这个代码的逻辑特别奇怪,您可以顺着这个代码的逻辑模拟一遍,来排查一些问题吗?

点评

好吧,我KK  发表于 2023-1-2 17:23
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:24:04 | 显示全部楼层
yesno是干啥的?

点评

就是判断是否要输出登陆界面(因为第一次登录后就不用再登陆了嘛,这一跳到其它函数,再回来就会重新输出登陆界面,就为了防止这个的)  发表于 2023-1-2 17:28
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:31:13 | 显示全部楼层
本帖最后由 tommyyu 于 2023-1-2 17:32 编辑
#include<conio.h>
#include<string>
using namespace std;
int main()
{
        string password;
        char c;
        while((c = getch())) {
                if(c == '\r') break; //mac和windows是\r,linux是\n
                if(!('a' <= c && c <= 'z') && \
                   !('A' <= c && c <= 'Z') && \
                   !('0' <= c && c <= '9') && \
                   c != '!' && c != '@' && c != '#' && c != '$' && c != '%' && c != '^' && c != '&' && c != '*' && c != '(' \
                && c != ')' && c != '[' && c != ']' && c != '{' && c != '}' && c != '_' && c != '-' && c != '+' && c != '=' \
                && c != '|' && c != '\\'&& c != '`' && c != '~' && c != ';' && c != ':' && c != '\''&& c != '"' && c != ',' \
                && c != '.' && c != '<' && c != '>' && c != '?' && c != '/' && c != 8) continue;
                else if(c == 8) {
                        if(password.length() != 0) {
                                printf("\b");
                                printf(" ");
                                printf("\b");
                                password.erase(password.length()-1, 1);
                        }
                }
                else {
                        password += c;
                    printf("*", c);
                }
        }
        printf("\n%s", password.c_str());
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:31:50 | 显示全部楼层
517行:
if(yesno='y') 
一看即错

而且加上也不对,因为 yesno 一开始初始化为 'n' ,对吧,而且start,vspeak,hello不会影响 yesno, 所以 work1 什么都没有 work
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:33:19 | 显示全部楼层

楼主的意思是改这个代码,在不破坏本意的情况也达到那种星号的效果

不过我觉得改代码本身的bug就得占8成的时间了

点评

本身测试没有bug哦~  发表于 2023-1-2 17:45
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:34:07 | 显示全部楼层
zhangjinxuan 发表于 2023-1-2 17:33
楼主的意思是改这个代码,在不破坏本意的情况也达到那种星号的效果

不过我觉得改代码本身的bug就得占8 ...

我都懒得看源码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:39:23 | 显示全部楼层
tommyyu 发表于 2023-1-2 17:34
我都懒得看源码

不想改了,bug又多,格式又有点……



【给楼主说的话】
我的意思是说建议加一些注释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:42:14 | 显示全部楼层
tommyyu 发表于 2023-1-2 17:40
大概看了看程序,好像没有设计登录/注册这一部分

注册有,登陆似乎也有,但是好像没有在适当的位置进行调用,也就导致了程序连密码都没有输入就歇菜了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-2 17:42:19 | 显示全部楼层
zhangjinxuan 发表于 2023-1-2 17:33
楼主的意思是改这个代码,在不破坏本意的情况也达到那种星号的效果

不过我觉得改代码本身的bug就得占8 ...

本身测试没有bug哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:47:51 | 显示全部楼层    本楼为最佳答案   
本帖最后由 人造人 于 2023-1-2 17:50 编辑

我没有找到通用的方法
这个代码不知道windows能不能用
dev-cpp的话应该能用吧
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <stdbool.h>

void echo(bool enable) {
    struct termios attr;
    tcgetattr(STDOUT_FILENO, &attr);
    attr.c_lflag &= ~(ICANON | ECHO);
    if(enable) attr.c_lflag |= ICANON | ECHO;
    tcsetattr(STDOUT_FILENO, TCSANOW, &attr);
}

void get_passwd(char buff[], size_t size, bool display_star) {
    if(size == 0) return;
    echo(false);
    for(size_t i = 0; i < size - 1; ++i) {
        int ch = getchar();
        if(ch == '\n' || ch == EOF) break;
        *buff++ = ch;
        if(display_star) putchar('*');
    }
    *buff = '\0';
    putchar('\n');
    echo(true);
}

int main(void) {
    char buff[1024];
    printf("请输入密码:");
    get_passwd(buff, 1024, true);
    puts(buff);
    printf("请输入名字:");
    scanf("%s", buff);
    puts(buff);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:51:18 | 显示全部楼层
zhangjinxuan 发表于 2023-1-2 17:42
注册有,登陆似乎也有,但是好像没有在适当的位置进行调用,也就导致了程序连密码都没有输入就歇菜了

我是真没找到登陆在哪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:52:00 | 显示全部楼层
那我还是忙我的帖子吧

点评

好滴(个人想法:这次更新先不更新隐藏密码了,下次再说吧) 不打扰了~  发表于 2023-1-2 17:53
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-2 17:56:59 | 显示全部楼层
tommyyu 发表于 2023-1-2 17:51
我是真没找到登陆在哪

好像是没有,我们好像都没有理解楼主的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 23:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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