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! :frowning:
Trong khi đó, em paste vào CodeBlocks, rùi thay gets_s() bằng gets() , thế là CodeBlocks chạy ngon lun. :smile:

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

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

3 Likes

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

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

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

2 Likes

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>);

2 Likes

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

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ỉ?

1 Like

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

1 Like

có ạ :slight_smile: :smile:

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

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

1 Like

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

1 Like

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 :wink:


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. :joy:, bác nào giải thích giùm em với. :wink:

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?