30/09/2018, 22:00

Bó tay Visual Studio 2015

Em gõ đoạn code này vào Visual Studio 2015: http://codepad.org/13csgQoP

Thì báo lỗi liền!
Trong khi đó, em paste vào CodeBlocks, rùi thay gets_s() bằng gets() , thế là CodeBlocks chạy ngon lun.

Vậy là ra sao vậy anh em?

*grab popcorn* viết 00:14 ngày 01/10/2018

Với con trỏ thì
gets_s() đòi hỏi tới 2 tham số. Nên chắc lỗi do vậy đó
https://msdn.microsoft.com/en-us/library/5b5x9wc7.aspx

Thanos viết 00:04 ngày 01/10/2018

Em thay code thành ra thế này: http://codepad.org/mWVfrr14

Thì thấy lỗi này:

*grab popcorn* viết 00:11 ngày 01/10/2018

Bạn thử thay n = 59 xem :?

Phạm Minh Anh Hữu viết 00:08 ngày 01/10/2018

Lỗi đầu tiên thì bạn thử tạo mới project rồi thực hiện lại xem.
Lỗi thứ 2 là do bạn khi báo char ten[60] mà ở hàm nhập tên gọi từ hàm main bạn chỉ truyền cho nó 2 ô nhớ để lưu mà trong 2 ô đó có 1 ô dùng để kết thúc chuỗi, kí tự: "\0" tên nên chắc chắn sẽ lỗi nếu nhập quá 1 kí tự vì can thiệp vao vùng nhớ không được cho phép, giải quyết: thay giá trị tham số n truyền vào của hàm nhập tên trong hàm main để đủ chứa tên + ký tự "\0" nhapTen(ten, <đủ ký tự để chứa tên>);

Thanos viết 00:11 ngày 01/10/2018

Cuối cùng cũng tìm ra: http://codepad.org/oXrovocO
Giải pháp hay hơn

Ngô Doãn Tuấn viết 00:05 ngày 01/10/2018

Giải pháp này vẫn chưa ổn lắm nhỉ? fflush(stdin) có hoạt động với VS đâu nhỉ?

Phạm Minh Anh Hữu viết 00:15 ngày 01/10/2018

Cũng có thể thay fflush(stdin) thành cin.gnore(1).

Thanos viết 00:12 ngày 01/10/2018

có ạ

Thanos viết 00:11 ngày 01/10/2018

chữ số 1 trong cin.ignore(1) rốt cục có nghĩa là sao ạ?

Nguyễn Tấn Khoa viết 00:11 ngày 01/10/2018

Không có đâu , có cho có lệ thôi. Nó không xóa bộ nhớ đệm được.

Nguyễn Tấn Khoa viết 00:12 ngày 01/10/2018

Có nghĩa là xóa 1 cái gì đó trong trường vào stdin

Thanos viết 00:15 ngày 01/10/2018

xóa toàn bộ chuỗi nhập vào, hay chỉ 1 ký tự em? ^^

Nguyễn Tấn Khoa viết 00:03 ngày 01/10/2018

cin.ignore(n): cái này là để đọc và loại bỏ n kí tự còn trong trường vào stdin

Phạm Minh Anh Hữu viết 00:05 ngày 01/10/2018

chữ số 1 trong cin.ignore(1) rốt cục có nghĩa là sao ạ?

[quote=“tankhoa0000, post:14, topic:29773, full:true”]cin.ignore(n): cái này là để đọc và loại bỏ n kí tự còn trong trường vào stdin
[/quote]

stackoverflow.com
Raddicus

When and why do I need to use cin.ignore() in C++?

c++, cin, getline, ignore
asked by Raddicus on 07:17PM - 24 Aug 14

https://www.quora.com/What-is-cin-ignore-and-what-is-the-use-of-it

Prototype: cin.ignore(<số ký tự bỏ qua>, <kí tự bỏ qua>) nhưng vẫn có thể dùng cin.ignore(), cin.ignore(n) cơ mà số n ở đây nếu là số ký tự được bỏ qua thì sao mình test n=1 mà enter cả chục lần vẫn cho nhập string ok nhỉ, dùng mà vẫn chưa hiểu rõ lắm. , bác nào giải thích giùm em với.

Nguyễn Tấn Khoa viết 00:06 ngày 01/10/2018

bạn đọc ở đây nhé

Bài liên quan
0