30/09/2018, 17:52

Thắc mắc về hàm getchar()

Cho em hỏi: trong video dạy C số 25 của anh Đạt…có ví dụ về một hàm nhập tên…em thấy ban đầu ảnh tạo một char c…rồi c = getchar();…sau đó mới gán chuCaiBiMat[i] = c;…
Em muốn hỏi là tại sao không gán thẳng chuCaiBiMat[i] = getchar(); luôn mà phải thông qua C :v mặc dù code em chạy sai nhưng em không biết là tại sao sai…nhờ anh chị giải đáp

do {
    chuCaiBiMat[i] = getchar();
    i++;
} while( chuCaiBiMat[i] != '
');
... viết 20:06 ngày 30/09/2018
do {
    chuCaiBiMat[i] = getchar();
    i++;
} while( chuCaiBiMat[i] != '\n');

Làm như thế này nghĩa là hàm getchar() lấy 1 kí tự bỏ vào chuCaiBiMat[i] nhưng trong while nó lại kiểm tra chuCaiBiMat[i+1].

Còn cách của anh Đạt mình nghĩ là nhập vào biến char c, để trong while anh Đạt sẽ kiểm tra biến c.

Nguyễn Văn Tâm viết 19:57 ngày 30/09/2018

getchar() đọc lấy từ stdin 1 ký tự rồi trả về 1 giá trị kiểu int.
Theo mình bạn nên sửa lại là while( (chuCaiBimat[i++] = (char)getchar()) != '\n'); chuCaiBiMat[i] = '\0';

Ngo Dinh Quyen viết 20:03 ngày 30/09/2018

Bạn sai ở chỗ:
Sau khi gán: chuCaiBiMat[ i ] = getchar();
thì : i++
Do đó ở Whilel(…) nó sẽ kiểm tra phần tử phía sau phần tử vừa được gán chuCaiBiMat[ i + 1] mà phần tử này thì chưa có giá trị xác định nên sẽ lỗi…
Bạn có thể sửa như bạn Sanegan199x đó.

Nguyễn Hoàng Trung viết 19:57 ngày 30/09/2018

Em hiểu rồi đa tạ mấy anh…

Còn cách của anh Đạt mình nghĩ là nhập vào biến char c, để trong while anh Đạt sẽ kiểm tra biến c.

Kiểm tra biến C để làm gì ạ @@

Ngo Dinh Quyen viết 20:03 ngày 30/09/2018

Kiểm tra biến C để làm gì ạ @

thì trong code của anh Đạt,
sau khi gán chuCaiBiMat[i] = c
thì i++
nên nếu trong while ta kiểm tra chuCaiBiMat[i] thì lại sai như trên, nên phải kiểm tra kí tự C
Nói chung khi code bạn cứ nháp ra giấy cái sơ đồ chạy chương trình ấy…sẽ thấy nó dễ nhìn hơn

Nguyễn Hoàng Trung viết 20:05 ngày 30/09/2018

Đã thông :v cảm ơn mấy anh

Thành Phạm viết 19:58 ngày 30/09/2018

2 posts were merged into an existing topic: Topic này chứa các post được cho là Off-topic

Bài liên quan
0