Dạ tình hình là em đang làm cái trò chơi cuối bài để kết thúc…em đọc tới khúc này thì không hiểu…mấy anh chị giải thích giùm em…tại sao trong while(getchar() != ‘\n’) lại không có câu lệnh trong đó @@
char docKytu ( )
{
char kytuNhapVao = 0;
kytuNhapVao = getchar ( ); // Doc ky tu duoc nhap dau tien
kytuNhapVao = toupper (kytuNhapVao); // Viet hoa ky tu do
// Lan luot doc tiep cac ky tu khac cho den khi gap \n
while (getchar ( ) != '\n') ;
return kytuNhapVao; // Tra ve ky tu dau tien doc duoc
}
Với bên dưới là code của em làm để chạy trò chơi…nhưng tới lúc so sánh ký tự thì không được @@ tại sao vậy ạ…code em tự viết nên có hơi khó hiểu với chưa tối ưu…mấy anh chị thông cảm
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <ctype.h>
char kiemtra();
int main ()
{
FILE *teptin;
teptin = fopen ("D:\\Source.txt" , "r");
char c = 0 ;
char array1[50] = "" ; //Lưu số dòng đếm được
char array2[50] = "" ; //Lưu từ bí mật cần đoán
char array3[50] = "" ; //Thay thế ký tự trong array2 thành * rồi hiện lên màn hình
int max = 0 ; //số dòng trong văn bản
int sobimat; //số dòng đuoc random
const int min = 1;
int len;
int j = 0 ;
while(fgets(array1 , 50 , teptin) != NULL) //Đọc số dòng trong text
{
max++;
}
srand(time(NULL)); //tạo số dòng cần đọc random
sobimat = (rand() % (max - min + 1) + min);
rewind (teptin);
for(int i = 0 ; i < sobimat ; i++) // đọc dòng được random
{
fgets(array2,50,teptin);
}
len = strlen (array2) - 1;
for(int i = 0 ; i < len ; i++) //thay the tu can doan bang ky tu *
{
array3[i] = '*';
}
printf ("\nLet's Play Hangman !!! \n");
printf("%s",array2);
for(int i = 10 ; i > 0 ; i-- )
{
printf("So luot hien tai cua ban la: %d\n",i);
printf("Tu bi an la gi? %s\n",array3);
printf("Hay doan mot chu cai: ");
kiemtra();
c = kiemtra();
while( j <= len )
{
if(c == array2[j])
{
printf("dung");
array3[j] = c;
}
j++;
}
printf("Tu can doan la: %s\n ",array3);
}
return 0;
}
char kiemtra()
{
char c = 0 ;
c = getchar();
while(getchar() != '\n');
return c;
}