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? 
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? 
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
Bạn thử thay n = 59 xem :?
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>);
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ỉ?
Cũng có thể thay fflush(stdin) thành cin.gnore(1).
có ạ

chữ số 1 trong cin.ignore(1) rốt cục có nghĩa là sao ạ? 
Không có đâu
, có cho có lệ thôi. Nó không xóa bộ nhớ đệm được. 
Có nghĩa là xóa 1 cái gì đó trong trường vào stdin 
xóa toàn bộ chuỗi nhập vào, hay chỉ 1 ký tự em? ^^
cin.ignore(n): cái này là để đọc và loại bỏ n kí tự còn trong trường vào stdin 
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. 
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?