พึ่งเคยใช้งานครั้งแรกโปรดอ่านที่นี่! howtouse!
x
  • Register
หางานด้าน IT อยู่เหรอ?

โปรแกรม log in ภาษา C++

0 votes

 

#include<stdio.h>
#include <conio.h>
#include<string.h>
#include<stdlib.h>
char uid[10]="admin",id[10]="";
char pwd[10]="cakeshop",pass[10]="";
int i,p[8];
char up(){
          for(i=0;i<=8;i++){
                  p[i]=getch();
                  if(p[i]==0) {break;}
                              pass[i]=p[i];
                              printf("*");}
                              }
main(){
printf("\nLOGIN\n\n");
       printf("Username: ");
       scanf("%s",&id);
       printf("Password: ");
       up();
       
 
       if(strcmp(uid,id)==0&&strcmp(pwd,pass)==0){
       printf("\n\nHello! admin cakeshop.\n\n");}
    //printf("\n%d %d",strcmp(uid,id),strcmp(pwd,pass));
     else{
       printf("\n\nUsername/Password is incorrect. Please try again\n\n");}
system("pause");
return 0;
 
ใส่พาสเวิร์ด cakeshop แล้วแต่มันเทียบค่าตรง strcmp(pwd,pass) ได้ไม่เท่ากับ 0 ต้องแก้ไขยังไง

 

ถามเมื่อ Jan 29, 2013 in C/C++ โดย asdasd (102 คะแนน)
   

3 Answers

0 votes
ตรง char up() แก้จาก for (i=0;i<=8;i++) เป็น for (i=0;i<8;i++) ครับ เพราะถ้า i <= 8 จะกลายเป็นว่าเราเก็บตัวอักษร 9 ตัว

แล้วก็ถ้าเรา fix ไว้แล้วว่า password ใส่ได้ 8 ตัวเท่านั้นก็ควรให้ pass[8] = '\0'; ด้วย
ตอบเมื่อ Jan 31, 2013 โดย Suthum Thitiananpako (251 คะแนน)
0 votes

 

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
char uid[10]="admin",id[10]="";
char pwd[10]="cakeshop",pass[10]="";
int i,p[8];
 
char up(){
    for(i=0;i<8;i++){
        p[i]=getch();
            if(p[i]!='\0'){ // ตรวจสอบ ค่า p[i] ที่รับเข้ามาจนกว่าจะครบ '\0' 
            pass[i]=p[i];
                printf("*");
            }
}
    }
main(){
printf("\nLOGIN\n\n");
        printf("Username: ");
        scanf("%s",&id);
        printf("Password: ");
        up();
       
        if(strcmp(uid,id)==0&&strcmp(pwd,pass)==0){
        printf("\n\nHello! admin cakeshop.\n\n");
}
      else{
        printf("\n\nUsername/Password is incorrect. Please try again\n\n");
}
system("pause");
return 0;
 
ประมาณนี้ครับ ลอง ใช้  debug แก้ไขโจทย์ดูนะครับ 
ตอบเมื่อ Feb 1, 2013 โดย Pakin Tam (108 คะแนน)
0 votes
ผิดครับ pass 8 ตัวต้องประกาศ 9 ช่อง เพราะข่องสุดท้ายคือ '\0'

แล้วก็ function up ไม่มีใส่ '\0' ต่อท้าย

ใน C การทำงานกับ string ทุกตัว จะวิ่งใน array ตั้งแต่ตัวแรกไปจนเจอ \0 เมื่อไม่ใส่ให้มัน มันก็จะวิ่งต่อไปเรื่อยๆ จนกว่าจะเจอ \0 ที่ใดที่หนึ่งใน ram ครับ
ตอบเมื่อ Feb 2, 2013 โดย mix5003 (715 คะแนน)

Related questions

+1 vote
0 คำตอบ
109 views ถามเมื่อ May 21, 2012 in ทั่วไป โดย phoojong (103 คะแนน)
–2 votes
0 คำตอบ
473 views ถามเมื่อ Sep 13, 2012 in programing-ทั่วไป โดย nadear_wanna (100 คะแนน)
0 votes
0 คำตอบ
268 views ถามเมื่อ Jun 5, 2015 in C/C++ โดย ThE_cAt (102 คะแนน)
...